Hallo Delphi-Freunde,
mal wieder ein Problemchen.
Ausgangssituation:
AccessTabelle soll in
MySQL-Tabelle eingelesen werden. Felddefinitionen sind vom Typ und Größe in beiden tabellen gleich.
1.
MySQL Tabelle soll komplett vor dem Einlesen geleert werden.
2. Danach sollen alle Datensätze aus der
Access Tabelle in die leere
MySQL-Tabelle eingetragen werden.
Folgender Fehler tritt auf, nachdem die
MySQL-Tabelle geleert wurde und bevor die Datensätze aus
Access eingelesen werden können
siehe Bild im Anhang.
Nachdem das Programm neu gestartet wird,
MySQL-Tabelle enthält zu diesem Zeitpunkt keine Datensätze mehr, funktioniert alles reibungslos.
Habe schon ein bißchen rumgebastelt mit
Query.open,
query.active,
query.execute, hat alles nicht gebracht. Use Execute aus der Fehlermeldung hab ich schon probiert ohne Erfolg
Hier mal der jetzige CODE-Schnipsel:
Delphi-Quellcode:
procedure TfrmDLS.speedLippsClick(Sender: TObject);
var
SQL_TEXT : string;
loesch : string;
I : Integer;
startzeit,endzeit : string;
begin
with datam_Dixi do begin
myQueryDLS.Active := true;
if myQueryDLS.RecordCount > 0 then begin
IF MessageDlg('Achtung ! Alle ['+
IntToStr(myQueryDLS.RecordCount)+'] Datensätze werden gelöscht, danach neue '+
'Datensätze aus Lipps eingelesen ! Sind Sie sicher ?',
mtWarning, [mbOK, mbCancel], 0) = mrOK then begin
loesch := 'J';
{ Lösche die alten Daten aus der Tabelle tbl_dlschein }
SQL_TEXT := 'TRUNCATE TABLE `tbl_dlschein`';
MyQueryDLS.SQL.Text := SQL_TEXT;
MyQueryDLS.ExecSQL;
end // MessageDLG
else
loesch := 'N';
end; //myQuery.Recordcount
{ lese Datensätze ein }
ADOtableDLS.Open;
Showmessage(IntToStr(AdoTableDLS.RecordCount)+ ' DATENSÄTZE werden jetzt aus LIPPS eingelesen !');
try
MyQueryDLS.open;
if not MyQueryDLS.Active then MyQueryDLS.Open;
ADOTableDLS.First;
Startzeit := timeToStr(now);
for I := 0 to ADOTableDLS.RecordCount -1 do begin
MyQueryDLS.Insert;
MyQueryDLS.FieldByName('DLNR').AsInteger := ADOtableDLS.FieldByName('DLNr').AsInteger;
MyQueryDLS.FieldByName('ABSENDERSACHBEARBEITER').AsString :=
ADOtableDLS.FieldByName('Absendersachbe').AsString;
MyQueryDLS.Post;
ADOTableDLs.Next;
end;
finally
end;
EndZeit := timeToStr(now);
SHowmessage('Fertig'+#10#13+'STRT : ' + startzeit+#10#13+'End : '+ endzeit);
MyQueryDLS.Close;
AdoTableDLS.Close;
end; // with
end;