Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Daten mit SQLDataSet in mysql-Datenbank schreiben (https://www.delphipraxis.net/192215-daten-mit-sqldataset-mysql-datenbank-schreiben.html)

jobo 3. Apr 2017 07:22

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Also ich kann mir nicht vorstellen, dass eine For Schleife oder irgendeinanderes Konstrukt in Delphi die Verarbeitung 2er Insert Statements unmöglich macht.
Kann es sein, dass irgendetwas Deiner vorigen Versuche noch etwas "Rauschen" im Delphicode hinterlassen hat und zu dem Problem führt.
Also z.B. ganz banal. 2. Insert wird nicht gegen Deine neue, sondern gegen die OriginalDB gefahren?

Kläre das mal, hier gibt es sicher irgendeine Sache, die Du übersiehst.

Für Dein Problem ist der Einsatz einer SP wahrscheinlich nicht notwendig. Du hast kein Werte oder Transaktionsproblem, sondern ein falsches SQL oder eine falsche DB in Folge fehlerhafter Delphiprogrammierung oder sowas.

Falls Du es per SP machen willst, zu anonymen Blöcken und SP:
In einem anonymen Block würdest Du den gesamten SQL Code tatsächlich in einer CommandText Eigenschaft oder so an die DB schicken. IdR wird ein anonymer Block durch irgendwas geklammert, Begin End; .. naja bei MySQL ist das vergebene Liebesmüh

Eine SP hat einen Aufbau wie ein Anonymer Block, liegt aber auf der DB selbst und hat einen Namen und Parameter. Letztlich sieht der Code einer Delphi Procedure sehr ähnlich. (Natürlich nicht exakt auf Syntaxebene).
Deine CommandEigenschaft sieht dadurch dann ganz anders aus, wenn Du die SP rufst. Hier wird nur der Name und die Parameter (sofern definiert) eingetragen.
Hier ein deutsches Beispiel für das Anlegen einer SP in mySQL:
https://www.tutorials.de/threads/mys...ysql-5.259973/

Hier noch ein Link mit diversen Aufruf Varianten in Delphi, allerdings per ADO, sollte sich vom Prinzip aber nicht unterscheiden.
http://scip.be/index.php?Page=ArticlesDelphi12&Lang=EN

p80286 3. Apr 2017 07:45

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Versuch es doch mal so:

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var z : Integer;
begin
 
   SQLDataSet1.Close;
   for z := 5 to 10 do
   begin
   SQLDataSet1.CommandText :=
   'insert into datenbank_neu.Tabelle5 (spalte1,spalte2,spalte3)' +
   'select spalte5,0,spalte12' +
   'from datenbank_alt.Tabelle20 where datenbank_alt.Tabelle20.reihenfolge =' + IntToStr(z)+';';
   SQLDataSet1.ExecSQL;
SQLDataSet1.Close;
   SQLDataSet1.CommandText := // diese Zeile hat in Beitrag #2 gefehlt.
   'insert into datenbank_neu.Tabelle42 (spalte1)' +
   'select spalte5 ' +
   'from datenbank_alt.Tabelle47 where datenbank_alt.Tabelle55.reihenfolge =' + IntToStr(z)+';';
   SQLDataSet1.ExecSQL;
SQLDataSet1.Close;
end;
Gruß
K-H

haentschman 3. Apr 2017 08:04

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Moin...:P
Zitat:

Also ich kann mir nicht vorstellen, dass eine For Schleife oder irgendeinanderes Konstrukt in Delphi die Verarbeitung 2er Insert Statements unmöglich macht.
...genauso sehe ich das auch. :thumb: Ich tippe auf ein klassisches Layer8 Problem. :stupid:

Das hatte ich schon in #9 probiert...:zwinker:
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var z : Integer;
begin
  for z := 5 to 10 do
  begin
  SQLDataSet1.Close; // neu
  SQLDataSet1.CommandText :=
  'insert into datenbank_neu.Tabelle5 (spalte1,spalte2,spalte3)' +
  'select spalte5,0,spalte12' +
  'from datenbank_alt.Tabelle20 where datenbank_alt.Tabelle20.reihenfolge =' + IntToStr(z)+';';
  SQLDataSet1.ExecSQL;
  SQLDataSet1.Close; // neu
  SQLDataSet1.CommandText := // diese Zeile hat in Beitrag #2 gefehlt.
  'insert into datenbank_neu.Tabelle42 (spalte1)' +
  'select spalte5 ' +
  'from datenbank_alt.Tabelle47 where datenbank_alt.Tabelle55.reihenfolge =' + IntToStr(z)+';';
  SQLDataSet1.ExecSQL;
Zitat:

Exception-Klasse TDBXError mit Meldung 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.datenbank_alt.Tabelle47 where datenbank_alt.Tabelle55.reihenfolge = 5' at line 1'. Prozess
...steht immer noch die Fehlermeldung im Raum. :roll:
Weiterhin hatte ich schon 2 Mal gefragt wie die SQL Statements an den ExecSQL ausehen (nicht aus den Quelltext sondern aus dem Debugger) und die exakte Fehlermeldung an diesen Punkten...:roll:


@AnfängerDelphi: Wie sollen wir helfen, wenn unsere Fragen nicht exakt beantwortet werden und die Tipps etwas gebracht haben oder nicht. Wir können nicht zur Laufzeit über deine Schulter schauen...:roll:

p80286 3. Apr 2017 12:27

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
@haentschmann
:oops: Hab ich übersehen :oops:

Gruß
K-H

haentschman 3. Apr 2017 12:30

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
:P Alles wird gut...

AnfängerDelphi 3. Apr 2017 22:14

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Hallo haentschman,

kann ich dir meine Projektdatei mal zuschicken.
Ich glaube so komme ich hier nicht weiter... da ich noch ein Anfänger bin und dir deine Fragen nicht beantworten kann.

Gruß AnfängerDelphi

p80286 3. Apr 2017 22:35

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Dann hängst Du den Source an Deinen nächsten Beitrag und die halbe Miete ist gezahlt.
Nur was der Debugger zeigt wissen wir dann immer noch nicht. Mit dem Debugger kannst Du umgehen?

Gruß
K-H

haentschman 4. Apr 2017 08:59

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Moin...:P
Zitat:

da ich noch ein Anfänger bin und dir deine Fragen nicht beantworten kann.
...da spricht nichts dagegen. Alle haben mal klein angefangen. :wink:

Aber:
Wir wissen nicht wie dein Kenntnisstand ist. :? Die Werkzeuge der IDE sollten dir vertraut sein, sonst kannst du nicht wirklich programmieren. :roll: Das Wichtigste ist aber den Arsch in der Hose zu haben wenn dir verschiedene Begriffligkeiten nichts sagen und nachzufragen. :thumb:

Links zu Debugger:
http://docwiki.embarcadero.com/RADSt...k_zum_Debuggen
http://www.delphipraxis.net/41047-tu...ortgeschr.html
https://www.youtube.com/watch?v=Oyd0ksN8cRs

AnfängerDelphi 4. Apr 2017 18:56

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Hallo,

meine Programmierkenntnisse sind sehr dürftig.
Ich kann eine einfache Formularanwendung erstellen,in der auch z.B. If-Anweisung verwendet werden,das wars dann auch schon.
Mit dem Debugger kenne ich mich auch nicht aus.

Was ist mein Ziel:
Ich brauche eigentlich nur eine Schleife,mit der ich meine Daten von Datenbank1 nach Datenbank2 übertrage.

haentschman könntest du mir bitte mal deine E-Mail-Adresse aufschreiben,dann schicke ich dir meine Projektdaten zu.

Gruß AnfängerDelphi

sko1 5. Apr 2017 08:20

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Zitat:

Mit dem Debugger kenne ich mich auch nicht aus.
Das halte ich aber für wichtiger als die If-Anweisung :-D

Das ist die Mindestvoraussetzung zur Programmentwicklung und absolut kein Hexenwerk!
Rechter Mausklick links neben den Sourcecode wo die Zeilennummern stehen macht einen blauen Balken (Haltepunkt) wo Dien Programm dann stehen bleibt wenn Du es in der IDE mit F9 startest.
Mit F8 wird dann Zeile für Zeile weitergearbeitet, überall kannst Du Dir die Inhalte der Variablen etc. ansehen, in eine Unterfunktion springst Du mit F7.

Bau Dir ein Miniprogramm wo a=1, b=2 , c = a+b berechnet werden und step das im Debugmodus durch, Du wirst sehen das ist kinderleicht!

Ciao
Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:50 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz