Einzelnen Beitrag anzeigen

nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#1

MS Access Tabelle in MySQL-Tabelle einlesen / Fehler

  Alt 28. Feb 2012, 14:45
Datenbank: Access/MySQL • Version: XE • Zugriff über: ADO/MyDAC
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;
Miniaturansicht angehängter Grafiken
28-02-2012-15-35-04.jpg  
Alles wird gut -
  Mit Zitat antworten Zitat