Einzelnen Beitrag anzeigen

marabu

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

Re: Daten in .txt File schreiben

  Alt 7. Jun 2006, 18:03
Hallo Andreas,

vielleicht möchtest du deine Prozedur noch etwas verbessern. Der Zweck scheint mir das versuchsweise Einfügen eines Datensatzes in eine Datenbank-Tabelle zu sein - bei Misserfolg das Wegschreiben in eine Protokolldatei. Leider hast du weder das verwendete RDBMS noch die Zugriffskomponenten mitgeteilt.

Die Datenbanktabelle scheint mir von einem Tool angelegt worden zu sein. Vermutlich könntest du die Daten auch mit diesem oder einem anderen Tool importieren - ohne eine einzige Zeile Code geschrieben zu haben. Wenn du mit den BDE-Komponenten arbeiten solltest, dann würde dir TBatchMove die Arbeit vielleicht erleichtern.

Wenn du aber deinen Weg weiter gehen möchtest, dann besser so:

Delphi-Quellcode:
procedure TMainForm.TryInsertRecord(q: TQuery; s: TStrings);
var
  i: Integer;
begin
  with q do
  begin
    for i := 0 to Pred(ParamCount) do
      Params[i].Value := s[i];
    try
      ExecSql;
    except
      Log(s); //
    end;
  end;
end;
Import-Fehler entstehen bei deiner Vorgehensweise schon dann, wenn die Daten ein Apostroph enthalten. Bereite die Query-Komponente nur einmal vor und in der Prozedur TryInsertRecord() werden dann einfach nur die Parameterwerte ausgetauscht.

Auch die Vorbereitung der Protokoll-Datei mit AssignFile() muss nicht mehrere tausendmal ausgeführt werden. Diesen Code solltest du besser in die aufrufende Prozedur auslagern. Öffnen und Schließen kannst du die Datei in der Prozedur Log() nach folgendem Muster:

Delphi-Quellcode:
procedure TMainForm.Log(s: TStrings);
begin
  if FileExists(LogFileName)
    then Append(LogFile)
    else Rewrite(LogFile);
  WriteLn(LogFile, s.CommaText);
  CloseFile(LogFile);
end;
Getippt und nicht getestet.

Grüße vom marabu
  Mit Zitat antworten Zitat