DbGrid dynamisch zur Laufzeit füllen



  • Hallo 😉

    möchte ein DbGrid füllen.
    Es sollen nur bestimmte Spalten aus der Datenquelle angezeigt werden

    Frage 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


Log in to reply