Application.ProcessMessages;
Ja das war es.Danke Sir Rufo
![Thumbs up!](images/smilies/icon_thumleft.gif)
Ich lade dich ein zum Häkelkurs.
![Thumbs up!](images/smilies/icon_thumleft.gif)
Bei Import-Geschichten gehe ich, nachdem ich in der Vergangenheit selber des Öfteren vor ähnlichen Situationen stand, immer folgendermaßen vor:
1. Ich sortiere die Quell-Tabelle erstmal nach PK (
Primary
Key), um einen guten Überblick bei eventuellen Suchaktionen zu gewährleisten.
2. Ich füge Ausgaben in den Importprozeß ein, entweder auf einer Statusbar oder in Labels. So sehe ich immer genau den Fortschritt der Importaktion:
Delphi-Quellcode:
DatMod.Dset_Level.IndexFieldNames := 'IDX_LEVEL';
DatMod.Dset_Level.Last;
StatusBar.Panels[0].Text := IntToStr(DatMod.Dset_Level.RecordCount);
DatMod.Dset_Level.First;
WHILE NOT DatMod.Dset_Level.Eof DO
BEGIN
StatusBar.Panels[1].Text := IntToStr(DatMod.Dset_Level.RecNo);
StatusBar.Panels[2].Text := DatMod.Dset_Level.FieldByName('IDX_LEVEL').AsString);
Application.ProcessMessages;
DatMod.NeuSet_Level.Append;
DatMod.NeuSet_Level.FieldByName('USER_LEVEL').AsString := DatMod.Dset_Level.FieldByName('USER_LEVEL').AsString;
DatMod.NeuSet_Level.Post;
DatMod.Dset_Level.Next;
END;
So sehe ich immer genau, wo der Einleseprozeß gerade steht. Kommt es zu irgendwelchen Fehlern, sehe ich das daran, daß sich die Zahlen in Panel 1 und 2 nicht mehr verändern. Ich notiere mir diese Zahlen und starte nun mit dem notierten Record die Methode noch einmal. Angenommen, ich notiere den Record 500:
Delphi-Quellcode:
// DatMod.Dset_Level.First;
DatMod.Dset_Level.RecNo := 500;
WHILE NOT DatMod.Dset_Level.Eof DO
...
Da der Fehler bei Record# 500 auftrat, steppe ich diesen durch und bemerke dann meist sofort oder auch erst beim zweiten oder dritten Versuch, woran es hakt. Bei mir waren es verschiedene Ursachen, z.B. war ein Feld in der Zieldatenbank als Not Null definiert, in der Quelldatenbank war aber in Record 500 kein Eintrag, also Null. Da kommt normalerweise eine Fehlermeldung der Zieldatenbank. Auf jeden Fall kannst du so dem Fehler leicht auf die Schliche kommen.