Hallo zusammen,
ich möchte eine
CSV Datei einlesen, Felder (EAN = Primary Key), Art-Nr usw..
Das Einlesen klappt wunderbar. Bis es zu einer Primary Key Verletzung kommt, dadurch wird das weitere Einlesen verhindert !
Wie kann ich nun dem Programm sagen, das es bei soch einer Konstellation diesen Satz überspringen soll und mit dem nächsten Datensatz der
CSV weitermachen soll ?
Delphi-Quellcode:
while memo1.Lines.Count <> i
do begin
sTEXT := memo1.Lines[i];
Liste := EXPLODE('
;',sTEXT);
// Daten Speichern
IF (sTEXT <> '
')
and (LISTE[0] <> '
EAN_NR')
then
begin
// SATZ_SPEICHERN; //
with ADOQueryMetro
do begin
if AdoConnectionMetro.Connected = false
then begin
try
AdoConnectionMetro.ConnectionString := ProvString;
//'Provider=SQLOLEDB.1;Password=Eisenach09!;Persist Security Info=True;'+
// 'User ID=sa;Initial Catalog=METRO;Data Source=METROSQL\SQLEXPRESS';
AdoConnectionMetro.Connected := true;
AdoQueryMetro.Active := true;
except
on E :
Exception do begin
MELDUNG := '
VERBINDUNGSFEHLER : '+ E.
Message;
writelog;
FEHLER := 1;
application.Terminate;
form1.Close;
ABORT;
EXIT;
end;
end;
end;
//Showmessage('Kein Fehler'); // weiter
//Showmessage(Liste[0]);
try
ADOQueryMetro.SQL.Clear;
ADOQueryMetro.SQL.Text := '
INSERT into PRODUKTE (EAN_NR, ART_BEZ_ALTERN, '+
'
PWHG, PWG, PWUG, KZ_WERB) '+
'
VALUES (:sEAN_NR, :sART_BEZ_ALTERN, :sPWHG, :sPWG, :sPWUG, :sKZ_WERB)';
ADOQueryMETRO.Parameters.ParamByName('
sEAN_NR').Value := LISTE[0];
ADOQueryMETRO.Parameters.ParamByName('
sART_BEZ_ALTERN').Value := LISTE[5];
ADOQueryMETRO.Parameters.ParamByName('
sPWHG').Value := LISTE[7];
ADOQueryMETRO.Parameters.ParamByName('
sPWG').Value := LISTE[8];
ADOQueryMETRO.Parameters.ParamByName('
sPWUG').Value := LISTE[9];
ADOQueryMETRO.Parameters.ParamByName('
sKZ_WERB').Value := LISTE[10];
//------------------------
ADOQueryMETRO.ExecSQL;
except
on E :
Exception do begin
MELDUNG := '
Doppelter Datensatz(EAN) : ' + LISTE[0] +'
| ' +E.
Message;
Showmessage(MELDUNG);
writelog;
end;
end;
end;
end;
i := i +1;
// memo1.Lines.Delete(0);
end;
MELDUNG := '
Es wurden ['+ IntToStr(i) + '
] Zeilen verarbeitet...';
WRITELOG;
Grüße vom nachtstreuner