AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MS Access Tabelle in MySQL-Tabelle einlesen / Fehler

MS Access Tabelle in MySQL-Tabelle einlesen / Fehler

Ein Thema von nachtstreuner · begonnen am 28. Feb 2012 · letzter Beitrag vom 28. Feb 2012
Antwort Antwort
Seite 1 von 2  1 2   
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, 15: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
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: MS Access Tabelle in MySQL-Tabelle einlesen / Fehler

  Alt 28. Feb 2012, 15:56
Die Fehlermeldung sagt ja schon alles. Du öffnest eine Query mit Open obwohl du noch eine Nicht-Resultset-SQL-Anweisung drin hast.

Und was soll das?

Delphi-Quellcode:
      MyQueryDLS.open;
      if not MyQueryDLS.Active then MyQueryDLS.Open;
Ich würde empfehlen deinen Quellcode mal stark zu überarbeiten und formatierungstechnisch in halbwegs lesbare Form zu bringen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: MS Access Tabelle in MySQL-Tabelle einlesen / Fehler

  Alt 28. Feb 2012, 15:58
Von MySl hab ich nicht so die Ahnung, aber ich würde mich an
ach egal Bernhard war schneller

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nachtstreuner

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

AW: MS Access Tabelle in MySQL-Tabelle einlesen / Fehler

  Alt 28. Feb 2012, 16:06
Hallo Bernhard,

erstmal danke für Deine Antwort.

Zitat:
Du öffnest eine Query mit Open obwohl du noch eine Nicht-Resultset-SQL-Anweisung drin hast.
Wo soll diese Anweisung sein ? Im SQL_TEXT ? Wenn Ja, müsste ich wahrscheinlich ein SQL.Clear einfügen, oder ?

Und noch eine Frage, was ist so schwierig zu lesen an dem Code, Einrückungen sind da, Kommentare sind eingefügt, aber ich lasse mir gerne ein Beispiel von Dir geben. Man ist ja lernfähig.
Alles wird gut -
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: MS Access Tabelle in MySQL-Tabelle einlesen / Fehler

  Alt 28. Feb 2012, 16:12
Wenn gelöscht wurde, was steht dann in SQL.Text von MyQueryDLS an dieser Stelle?
Zitat:
Delphi-Quellcode:
Showmessage(IntToStr(AdoTableDLS.RecordCount)+ ' DATENSÄTZE werden jetzt aus LIPPS eingelesen !');
    try
      MyQueryDLS.open;
Das müsste ja der TRUNCATE-Befehl sein, welchen Sinn soll da das Open machen? Und erst recht die Zeile danach wie von Bernhard angesprochen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: MS Access Tabelle in MySQL-Tabelle einlesen / Fehler

  Alt 28. Feb 2012, 16:15
Zitat:
Du öffnest eine Query mit Open obwohl du noch eine Nicht-Resultset-SQL-Anweisung drin hast.
Wo soll diese Anweisung sein ? Im SQL_TEXT ? Wenn Ja, müsste ich wahrscheinlich ein SQL.Clear einfügen, oder ?
Wenn du ein Clear einfügst dann versuchst du eine leere SQL-Anweisung zu öffnen -> Wird in einer anderen Fehlermeldung enden.

Ansonsten hat deine Query immer noch den Wert:

MyQueryDLS.SQL.Text := SQL_TEXT;
Und noch eine Frage, was ist so schwierig zu lesen an dem Code, Einrückungen sind da, Kommentare sind eingefügt, aber ich lasse mir gerne ein Beispiel von Dir geben. Man ist ja lernfähig.
Beispiel:

Delphi-Quellcode:
      else
      loesch := 'N';
Gehört zu else wird aber nicht eingerückt

Delphi-Quellcode:
    finally

    end;
Mmmh.

Aber stimmt. Du hast einrückungen. Aber dadurch das du beginn nich in eine neue Zeile legst wirds m.E. nicht schöner.

Und bitt schmeiß das With raus:

  with datam_Dixi do begin Ist ein maximaler Quell von Fehler da statt deiner Membervariable auf einmal ein with-Variable verwendet wird.
Andere Programmiersprachen vermeiden das indem man den Punkt schreiben muss wenn man die with-Variable ansprechen will.
Bei uns fliegt with immer raus wenn man mal Code überarbeitet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
nachtstreuner

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

AW: MS Access Tabelle in MySQL-Tabelle einlesen / Fehler

  Alt 28. Feb 2012, 16:27
Hallo bernhard,

danke für die Tips zur besseren Lesbarkeit. ich werde das Berücksichtigen.

Nun zu dem With, wenn ich das with weglasse, müsste ich doch vor jedem Datensensitiven Befehl, den Datasetbezeichner anfügen, oder ?

Beispiel:
Delphi-Quellcode:
with datam_DIXI do begin
    ADOQueryLIPPS.Active := false;
end;
würde dann so aussehen:

datam_DIXI.ADOQueryLIPPS.active := false;
Alles wird gut -
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: MS Access Tabelle in MySQL-Tabelle einlesen / Fehler

  Alt 28. Feb 2012, 16:29
Genau. Das ist zwar mehr Tipparbeit, aber dafür sieht man auf den ersten Blick, was gemeint ist und noch wichtiger: der Compiler weiß es dann auch eindeutig.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: MS Access Tabelle in MySQL-Tabelle einlesen / Fehler

  Alt 28. Feb 2012, 16:31
Genau. Das ist zwar mehr Tipparbeit, aber dafür sieht man auf den ersten Blick, was gemeint ist und noch wichtiger: der Compiler weiß es dann auch eindeutig.
Der Compiler ist nicht das Problem. Der weiß schon was er nehmen soll.
Blod ob man als Entwickler weiß was der Compiler nimmt ...

Superschön ist es wenn man in der Klasse dan ein property/Methode ergänzt die es bisher nur auf höhee Eben gab - Viel spaß beim Debuggen ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: MS Access Tabelle in MySQL-Tabelle einlesen / Fehler

  Alt 28. Feb 2012, 16:32
Deshalb schrieb ich ja "was gemeint ist". Das ist ja nicht immer das, was der Compiler dann wirklich nimmt
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz