Einzelnen Beitrag anzeigen

Janek76
(Gast)

n/a Beiträge
 
#12

Re: Einfrieren von Form verhindern

  Alt 8. Mai 2006, 14:18
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;
  Mit Zitat antworten Zitat