Über Ausgabe eines IBQuery oder DBGrid iterieren



  • Moin

    Ich möchte für eine Exportfunktion (Query Ergebnis in CSV) gerne über die Daten die ich aus einem IBQuery heraus bekomme iterieren (also zeilenweise von oben links nach unten rechts) und den Inhalt jeder "Zelle" auslesen. Leider gelingt mir das noch nicht so recht. Im Moment packe ich die Ergebnisse in ein DBGrid und versuche da drüber zu gehen, weiß aber noch nicht wie ich am Ende einer Zeile in die nächste komme (SelectedRows scheint man nur lesen, nicht schreiben zu können?)

    Hat mir jemand einen Tip, wie ich da vorgehen könnte? Oder gibt es vielleicht einen klügeren Weg der gleich das IBQuery verwendet, ohne den Umweg über das DBGrid?

    Wäre dankbar für ein paar Tips 🙂

    Viele Grüße,
    Banzai!



  • Hallo

    Siehe TDataSet::First(), ::Next() und ::Eof, um alle zeilen zu iterieren.
    Desweiteren TDataSet::Fields::Fields[] um die Spalten zu iterieren.

    bis bald
    akari



  • Hi Akari et al.

    Danke für den Tip, sowas hab ich gesucht!

    So ganz will es allerdings noch nicht funktionieren. Ich gehe jetzt so vor dass ich die Query ausführe (Close() SQL-Clear() SQL->Add() Open()) und dann versuche auf das DataSet zuzugreifen. allerdings scheitert schon ein

    int foo = Form1->Query1->DataSource->DataSet->Fields->Count;
    

    mit einer EAccessViolation. Darf ich da so direkt nicht drauf zugreifen? Oder muss ich vorher noch was mit dem IBQuery anstellen?

    Viele Grüße,
    Banzai!



  • Hallo

    TQuery ist bereits ein DataSet

    int foo = Form1->Query1->Fields->Count;
    

    Desweiteren must du dir gut überlegen, ob du das Form1-> wirklich brauchst. In den meisten Fällen (wo du in einer Methode von Form1 auf ein Element von Form1 zu greifen willst) nämlich nicht.

    bis bald
    akari


Anmelden zum Antworten