DbGrid dynamisch zur Laufzeit füllen
-
Hallo
möchte ein DbGrid füllen.
Es sollen nur bestimmte Spalten aus der Datenquelle angezeigt werdenFrage 1:
Columns erzeuge ich mit:
grid->Columns->Add();
grid->Columns->Items[0]->Title->Caption = "ID";Finde ich umständlich, für jede Spalte 2 Zeilen zu schreiben.
Geht das auch mit einem Vector oder Array oder ...?Frage 2:
Da das Grid immer unterschiedliche Spalten haben soll (je nach DB-Abfrage),
will ich die Zellenwerte jeder Zeile auch der zugehörigen Spalte zuweisen
(mit grid->DataSource = dsGrid; werden ja alle Spalten angezeigt).
Also in einer Schleife über das RecordsSet nach dem Schema:while (!Query->Eof) {
Zeile1 - Spalte1 - Wert
Zeile1 - Spalte2 - Wert
Zeile1 - Spalte3 - Wert
etc...Query->Next();
}Wie könnte das aussehen? Gibt es ein Tutorial dafür?
Gruß und Danke
-
Hallo
wenn du eine Abfrage für die hinter dem DBgrid liegende Query-Komponente ausführst, wird doch automatisch das DBGrid mitsamt Spalten und Werten aktualisiert. Das bedeutet es ist gar nicht erwünscht DBgrid selber mit Werten zu füllen. Sondern du must (oder besser gesagt kannst und solltest) deine Abfrage entsprechend anpassen, so das bereits passende Daten abgefragt werden.
Da du offenbar nicht direkt Feldnamen aus der DB im Grid anzeigen willst, sondern eigene Captions kannst du dafür bei der Abfrage auch schreiben
SELECT cryptic_field_name AS 'Mein Feld',...
bis bald
akari
-
Ist etwas komplizierter als Du denkst...
Nicht so ne AutoFüll Abfrage, das ist unflexibel bei komplexer
Datenpräsentation, nach dem Motto: Stell dar, egal wie es aussieht.StringGrid / DrawGrid kann was ich brauche