Wie MKinzler schon aufgezeigt hat: Ein Insert direkt nach einem Edit macht keinen Sinn. Du versetzt den aktuellen Datensatz in den Edit-Modus, ohne ihn via Post oder Cancel wieder daraus zu befreien. Es könnte daher sein, daß das anschließende Insert dazu führt, daß irgend ein Stack überläuft, nämlich der, der sich die Edit-Befehle merkt. Unübersichtlich ist auch die Reihenfolge von ADOTable1.Next und AbsTable1.Post gewählt: Besser wäre es hier, das Next ganz am Schluß des Schleifenrumpfes aufzurufen.
Und schließlich: Die Formatierung macht auch keinen Sinn. Besser wäre hier, die Zuweisungen im Verhältnis zu Edit und Post einzurücken:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject); // Übernahme Import Accdb Anfang
begin
ADOTable1.First;
while not ADOTable1.Eof do
begin
AbsTable1.Insert;
AbsTable1.FieldByName('Preis').AsString := ADOTable1.FieldByName('Preis').AsString;
AbsTable1.FieldByName('DEU').AsString := ADOTable1.FieldByName('DEU').AsString;
AbsTable1.FieldByName('ENG').AsString := ADOTable1.FieldByName('ENG').AsString;
AbsTable1.FieldByName('ITA').AsString := ADOTable1.FieldByName('ITA').AsString;
AbsTable1.Post;
ADOTable1.Next;
end;
end;
So siehst du auch gleich, wenn ein Edit und ein Insert derselben Tabelle aufeinander folgen.
Noch eine Frage: Wieso ist Preis ein String? Damit kann man doch gar nicht mehr rechnen ...