Datenbanktabellen (SQLQuery-Abfragen) in eine CSV-Datei schreiben

void __fastcall TForm1::SaveToCSV(TQuery *Abfrage)
{
    TStringList *Spaltenbezeichner, *Ausgabe;
    AnsiString Bezeichner, Inhalt;

    Spaltenbezeichner = new TStringList;
    Ausgabe = new TStringList;

    // ermittle die Spaltenbezeichner
    Abfrage->GetFieldNames(Spaltenbezeichner);

    for (int Spalte=0; Spalte < Spaltenbezeichner->Count; Spalte++)
    {
        Bezeichner += Spaltenbezeichner->Strings[Spalte] + &quot;;&quot;;
    }

    // schreibe die Bezeichner ins AusgabeStringlistenObjekt
    Ausgabe->SetText(Bezeichner.c_str());
    delete Spaltenbezeichner;

    Abfrage->First();

    // ermittle die Einträge aus aktuellem Datensatz
    for (int Zeile=0; Zeile < Abfrage->RecordCount; Zeile++)
    {
        for (int Spalte = 0; Spalte < Abfrage->Fields->Count; Spalte++)
        {
            //gehe zur nächsten Zeile des Abfrageobjekts
            //schreibe Zeile in String durch ; getrennt
            Inhalt += Abfrage->Fields->Fields[Spalte]->AsString + &quot;;&quot;;
        }

        // schreibe Zeile in AusgabeStringlistenobjekt
        Ausgabe->Append(Inhalt);

        // leere String -> für Werte aus neuer Zeile
        Inhalt = &quot;&quot;;

        // gehe zu nächstem Datensatz
        Abfrage->Next();
    }

    // speichere Inhalt als CSV-Datei
    Ausgabe->SaveToFile(&quot;c:\\Ausgabedatei.csv&quot;);

    Application->MessageBox(&quot;Datei wurde erfolgreich gespeichert&quot;, &quot;Hinweis&quot;, MB_OK);
    delete Ausgabe;
}

Schreibe einen Kommentar