Ich würde es andersherum schreiben:
Delphi-Quellcode:
...
with Daten do
begin
if TryStrToDate(Parser.EntriesMB256[i].Datum,OutDatum){ = true} then
try
DM_PS.Qry_InsertMB256.Close;
DM_PS.QryImportMB256.ParamByName('LfdNr').AsInteger := Parser.EntriesMB256[i].LfdNr;
DM_PS.QryImportMB256.ParamByName('Datum').AsDate := OutDatum;
DM_PS.QryImportMB256.ParamByName('Uhrzeit').AsTime := StrToTime(Parser.EntriesMB256[i].Uhrzeit);
DM_PS.QryImportMB256.ParamByName('Ereignis').AsString := Parser.EntriesMB256[i].Ereignis;
DM_PS.QryImportMB256.ParamByName('Teilnehmer').AsString := Parser.EntriesMB256[i].Teilnehmer;
DM_PS.QryImportMB256.ParamByName('Bereich').AsString := Parser.EntriesMB256[i].Bereich;
DM_PS.QryImportMB256.ExecSQL;
DM_PS.ConPSSecur.Commit;
except
DM_PS.ConPSSecur.Rollback;
end
else
begin
FehlerMemo.Lines.Add('Fehler in Datensatz '+IntToStr(Parser.EntriesMB256[i].LfdNr));
FehlerMemo.Lines.Add('In Datei');
FehlerMemo.Lines.Add(Label1.Caption);
FehlerMemo.Lines.Add('');
Label9.Caption := IntToStr(StrToInt(Label9.Caption)+1);
end;
...
Wobei ich vielleicht nicht jeden Datensatz committen würde, sondern in Blöcken von z.B. 50. Und müsste anschließend nicht eine neue Transaktion gestartet werden?