Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Query in csv:welche schnelle Funktion zum suchen/ersetze

  Alt 24. Jun 2007, 16:57
Hallo Jürgen,

eine korrekte CSV-Datei könntest du auch so erzeugen:

Delphi-Quellcode:
procedure ValuesToStrings(fields: TFields; s: TStrings);
var
  i: Integer;
begin
  s.Clear;
  for i := 0 to Pred(fields.Count) do
    s.Add(fields[i].AsString);
end;

procedure SaveAsCSV(const select, fn: string; delimiter, quoteChar: Char);
var
  s: TStrings;
  fs: TStream;
  line: string;
begin
  s := TStringList.Create;
  s.Delimiter := delimiter;
  s.QuoteChar := quoteChar;

  fs := TFileStream.Create(fn, fmCreate);

  with TQuery.Create(nil) do
  try
    DatabaseName := 'my_nice_DB_Name';
    SQL.Text := select;
    Open;
    // WriteNames ?
    while not Eof do
    begin
      ValuesToStrings(Fields, s);
      line := s.CommaText + sLineBreak;
      fs.Write(line[1], Length(line));
      Next;
      Application.ProcessMessages;
    end;
    Close;
  finally
    Free;
    fs.Free;
    s.Free;
  end;
end;
Dabei werden die üblichen Besonderheiten bereits berücksichtigt. Der Code muss sicher noch etwas poliert werden und ist nicht getestet, sollte aber zeigen worauf es ankommt.

Freundliche Grüße
  Mit Zitat antworten Zitat