Ja. OK. Mein Form heißt anders, aber ich kriege trotzdem eine Zugriffsverletzung. Weiß auch nicht warum.
TACSVImport = class(TForm)
[...]
private
[...]
public
[...]
end;
var
ACSVImport: TACSVImport;
[...]
ACSVImport.Refresh führt bei mir zu einer Zugriffsverletzung
und das mit dem Refresh wie gesagt: Innerhalt der Delphi-Umgebung scheints zu funktionieren. Beim Aufruf der compilierten Datei nicht. Es ist übrigens eine 100%ige Schleife pro Datensatz. Innerhalb eines Datensatzes werden zwar Funktionen und Datenbankoperationen aufgerufen, aber es geht dann immer beim nächsten Datensatz weiter.
[...]
Delphi-Quellcode:
DMS.DBOLAdoSQL.BeginTrans;
Timer1.Enabled := true;
try
try
while not adsBBCSVTemp.Eof do begin
SKU := adsBBCSVTemp.FieldValues['SKU'];
EAN := adsBBCSVTemp.FieldValues['EAN'];
Name := adsBBCSVTemp.FieldValues['Name'];
ILN := adsBBCSVTemp.FieldValues['SupplierILN'];
Case ArtikelVorhanden(SKU, EAN, Name, ILN) of
0: begin
if cxcbArtNeu.Checked then begin
if not InsertNeuerArtikel then Exit;
end;
end;
1: begin
UpdateArtikel(1,SKU);
end;
2: begin
UpdateArtikel(2,EAN);
end;
3: begin
ImpUpNOK := ImpUpNOK + 1;
end;
end;
i := i + 1;
InitpbBar(true, 2, i);
adsBBCSVTemp.Next;
end;
DMS.DBOLAdoSQL.CommitTrans;
MessageDlg('Von '+IntToStr(i)+' Datensätzen wurden '+IntToStr(ImpUpOK)+' erfolgreich aktualisiert, '+IntToStr(ImpNeuOK)+' erfolgreich neu angelegt. '+IntToStr(ImpUpNOK)+' Artikel konnten nicht aktualisiert, '+IntToStr(ImpNeuNOK)+' nicht neu angelegt werden. Bei '+IntTostr(LiefUpNeu)+' gefundenen EANNummern wurde der ausgewählte Lieferant neu zugeordnet.', mtInformation, [mbOK], 0);
except
DMS.DBOLAdoSQL.RollbackTrans;
end;
finally
Timer1.Enabled := false;
end;