Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Query Ergebniss als Datei speichern oder Drucken (https://www.delphipraxis.net/42951-query-ergebniss-als-datei-speichern-oder-drucken.html)

renekr 26. Mär 2005 13:21

Datenbank: MS SQL Server 2000 • Zugriff über: ADO / SQL Provider for Sql Server

Query Ergebniss als Datei speichern oder Drucken
 
Hi,
Weiß jemand wie man das Query Ergebniss einer Datenabnk abfrage in eine Datei schreiben kann ?

Danke.

Sharky 26. Mär 2005 13:42

Re: Query Ergebniss als Datei speichern oder Drucken
 
Hai renekr,

ich würde das einfach in zwei Schleifen machen. Die erste While Not (Query.eof) do durchläuft alle Datensätze.
Mit der zweiten for - do schreibst Du jedes Feld .AsString in eine Zeile eines TStringGrids. Dieses kannst Du dann ganz einfach speichern.

renekr 26. Mär 2005 19:39

Re: Query Ergebniss als Datei speichern oder Drucken
 
Danke.
Habe ma lgeseh ndas es sowas gibt?
adoquery1.savetofile

weißt du wie oder was es da speichert?
Ich habe ein txt File genommen und da stand alles drin,aber ohne Tab stobs.

Zur Info: Meine Tabelle hat 43 Spalten,also wenn i es so mache dann hab i einiges zuschreiben oder?


Danke.

Sharky 27. Mär 2005 06:17

Re: Query Ergebniss als Datei speichern oder Drucken
 
Zitat:

Zitat von renekr
....weißt du wie oder was es da speichert?....

Mit dieser Methode wird die Ergebnissmenge als XML gespeichert.

Die Anzahl deiner Felder ist egal wenn man es in einer Schleife macht ;-)

Hier mal ein Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  sl : TStringList;
  foo : String;
  ndx : Integer;
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'SELECT * FROM test';
  ADOQuery1.Open;  
  sl := TStringList.Create;
  try
    While not(ADOQuery1.Eof) do // Schleife für alle Datensätze
    begin
      foo := '';
      for ndx := 0 to Pred(ADOQuery1.FieldCount) do // Schleife für alle Felder
      begin
        foo := foo + ADOQuery1.Fields[ndx].AsString; // Feld an String hängen
        if (ndx < Pred(ADOQuery1.FieldCount)) then  // wenn nicht das letze Feld...
        begin
          foo := foo + ';'; // ... dann Trennzeichen einfügen
        end;
      end;
      sl.Add(foo); // String in TStringList
      ADOQuery1.Next; // Nächsten Datensatz
      Application.ProcessMessages;
    end;
    sl.SaveToFile('c:\blubb.csv'); // Speichern.
  finally
    sl.Free;
  end;
  ADOQuery1.Close;
  ShowMessage('*blubb*');
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz