Ich denke dafür würde ich mir eine temporäre Tabelle auf dem
MySQL erzeugen und diese dann im DBGrid anzeigen lassen.
Dabei kann man auch berücksichtigen, dass man eben nur x Spalten benötigt (das
CREATE TEMPORARY TABLE-Statement muss man halt anpassen).
Wenn die Eingabe abgeschlossen ist, dann trägt man einfach (geht z.B. auch mit einer StoredProcedure) die Werte aus der temporären Tabelle in die echte Tabelle ein.
Das sollte auch unabhängig von der verwendeten Delphi-Version möglich sein, da wir aus der Client-Sicht eine echte komplett beschreibbare Tabelle vor uns haben
Ach ja, man darf natürlich die Feldliste nicht schon zur
Design-Time komplett zuweisen, da wir ja eine dynamische Feldliste haben
... ja, im Prinzip läufts auf das gleiche hinaus. Hatte an eine UDF schon mal gedacht, denn es geht ja noch weiter: ich hab jetzt eine Liste mit Namen und IDs und sagen wir mal 4 Spalten zum Anklicken der Anwesenheit. Jetzt muss ich aber noch für *jedes* Feld ne extra
Query an die
DB schicken, ob für diesen Termin schon eine Entschuldigung vorliegt. DAs macht bei sagen wir mal 20 Schülern mal schnell 80 Anfragen, die übers Netz gehen. Die
DB liegt irgendwo bei 1&1, ich hoffe dass das performancemäßig halbwegs hinhaut. Aber genau deswegen dachte ich schon an ne UDF, die das in einem Aufwasch serverseitig erledigt und mir dann nur eine Ergebnismenge liefert, anstelle 80 hin- und herzutelefonieren.
Nur sind UDF dann halt das nächste Thema, mit dem ich noch nie zu tun hatte. Ideal wäre sowas wie
select getAbsenzenliste(kursid, termin1, termin2, ...., terminx)
wobei termin1 bis terminx einfache zeitstempel sind.
Die UDF holt dann erst mal alle kursmitglieder des kurses und prüft dann für jeden jeden Termin durch. Tja, im Kopf hätt ich's schon...
Na mal sehen, aktuell klappts mit dein Einzelqueries schon mal ganz gut, das Netz darf halt nicht klemmen...