Delphi-PRAXiS

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)

AnfängerDelphi 29. Mär 2017 20:42

Datenbank: Mysql • Version: 5.7 • Zugriff über: Delphi xe3

Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Hallo an alle,

ich möchte mehrere Datensätze in eine bestehende Datenbank schreiben.
Auf folgende Art und Weise habe ich es mal ausprobiert.
Code:
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;
Wenn ich auf den Button klicke,werde 6 Datensätze in die Datenbank geschrieben.

Ich benötige aber noch eine zweite Insert-Anweisung,für weitere Daten.
Die Daten sollen folgendermaßen geschrieben werden:
Zuerst Insert-Anweisung1,dann Insert-Anweisung2,Zähler um 1 erhöhen,dann wieder Insert-Anweisung1 und Insert-Anweisung2.... usw.

Kann ich einfach eine weitere Insert-Anweisung unter die vorhandene schreiben,oder muß ich ein weiteres DataSet anlegen und dort die Insert-Anweisung2 unter CommandText einfügen???


Gruß AnfängerDelphi

nahpets 29. Mär 2017 21:01

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Würde jetzt einfach mal behaupten, dass sowas hgehen sollte:
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.CommandText :=
  'insert into datenbank_neu.Tabelle42 (spalte1)' +
  'select spalte5 ' +
  'from datenbank_alt.Tabelle47 where datenbank_alt.Tabelle55.reihenfolge =' + IntToStr(z)+';';
  SQLDataSet1.ExecSQL;
Also: Meiner Meinung nach kann man nacheinander belibige Statements hintereinander per ExecSQL ausführen lassen.

Ein Zusammenhang muss nicht zwingend gegeben sein, egal ob in einer Schleife oder nicht.

Zitat:

Kann ich einfach eine weitere Insert-Anweisung unter die vorhandene schreiben?
Meiner Meinung nach ganz klar Ja.

Jumpy 30. Mär 2017 10:28

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Man sollte meiner Erfahrung mit ADO-Komponenten nach, weiß nicht ob's auch anderswo besser geht, so wie bei nahpets Beispiel zwei Anweisungen getrennt hintereinander ausführen. Theoretisch könnte man ja auch alle Anweisungen mit Semikolon getrennt hintereinanderschreiben und das dann nur ein mal Ausführen, aber das klappt mMn nicht.

Man könnte allerdings das ganze Schleifengerafel weglassen zu:

Delphi-Quellcode:
'...where datenbank_alt.Tabelle20.reihenfolge in (5,6,7,8,9,10)'

//oder
'...where datenbank_alt.Tabelle20.reihenfolge between 5 and 10'

//oder wenn's was dynamisches ist:
'...where datenbank_alt.Tabelle20.reihenfolge in ('+SQL_Liste+')'

function SQL_Liste:String;
var z : integer;
begin
  for z:=5 to 10 do
    begin
    if Result<>'' then Result:=Result+','
    Result:=Result+IntToStr(z)
    end;
end;

jobo 30. Mär 2017 11:19

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

Zitat von nahpets (Beitrag 1365918)
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;
  'insert into datenbank_neu.Tabelle42 (spalte1)' +
  'select spalte5 ' +
  'from datenbank_alt.Tabelle47 where datenbank_alt.Tabelle55.reihenfolge =' + IntToStr(z)+';';
  SQLDataSet1.ExecSQL;

Da fehlt wohl versehentlich das 2.mal Setzung des CommandText im Beispiel.
Ob Schleife oder nicht, man kann immer wieder neue Statements eintragen und ausführen.

Und ich würde für DML Statments eher eine Query Object nehmen, statt eines Datasets.

Mehrer Abfragen / Statements hintereinander funktionieren m.E. in kaum einer dieser Implementierungen. Warum das so ist, weiß ich nicht. Ein Grund könnte aber sein, dass genau ein Dataset eigentlich mit dem Focus implementiert wurde, eben 1(genau ein) Dataset gemäß Abfrage zurückzuliefern. Das ist etwas anderes als eine kette von DML Statements, die irgendwas in der DB ändern. Für diese Zwecke gibt es glaub ich hier und da extra Script Komponenten.

Variante (wenn es nicht mySQL ist)
Man kann mehrere Inserts, Updates, Deletes usw. in einem ExecuteSQL mit ADO absetzen, wenn das Zielsystem (die Datenbank) Anonyme Blöcke beherrscht. Das ist aber m.E. bei mySQL nicht der Fall.
Die "normale" Variante dazu ist dann eigentlich, auf der DB eine StoredProcedure anzulegen, die Befehlsketten inkl Logik ausführt. Der Aufruf der SP auf dem Client ist dann wieder nur 1 Befehl. Das ist natürlich etwas undynamischer als ein Anonymous Block.

AnfängerDelphi 30. Mär 2017 23:14

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

ich habe noch einmal paar Test's durchgeführt und muß sagen,jobo hat recht.
Zitat:

Zitat von jobo
Mehrer Abfragen / Statements hintereinander funktionieren m.E. in kaum einer dieser Implementierungen.

Wenn ich nur eine Insert-Anweisung verwende,werden 6 Datensätze in die Datenbank geschrieben,bei zwei Insert-Anweisungen bekomme ich eine Fehlermeldung und es wird nur ein Datensatz geschrieben.
Code:
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
Gibt es noch eine andere Möglichkeit mit Delphi zwei Datensätze hintereinander in die Datenbank zu schreiben,oder ist es besser PHP dafür zu benutzen?

Gruß AnfängerDelphi

jobo 31. Mär 2017 00:16

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Wie schon gesagt, anonyme Blöcke wären eine Möglichkeit, nach meiner Kenntnis gibt es das (noch) nicht in mysql.
Ich weiß leider auch nicht, was die Implementierungen in PHP oder anderswo können, wie gesagt, Scriptfähigkeit ist selten und wenn gegeben, dann sind die Libs / Komponenten auch gern so benannt.

Mit PHP o.ä. wärst Du vermutlich erstmal nicht weiter.

Und auch schon gesagt: Der nächste Verwandte der Anonymen Blöcke sind die Stored Procedures. Die sind dafür gemacht. Da die SP selbst mehr oder weniger statisch sind, musst Du dort per Aufruf alle Parameter übergeben, die dort verarbeitet werden sollen.

Vorteil ist jedenfalls, dass man damit mehr oder weniger automatisch transaktional arbeitet, vielleicht suchst Du genau deshalb nach sowas.

haentschman 31. Mär 2017 07:52

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

oder ist es besser PHP dafür zu benutzen?
... er hat Jehova gesagt. :stupid:
Was ist mit dir los? Gleich die Flinte ins Korn werfen wenn etwas nicht auf Anhieb funktioniert. :evil:

Hast du dich auch mit den Grundlagen der DBX Komponente befaßt?
http://docwiki.embarcadero.com/Libra...on.TDBXCommand
Zitat:

Die Eigenschaft TDBXCommand.Text wird auf den Befehl gesetzt, der ausgeführt werden soll.
...da steht das das Command.Text für diese eine SQL Anweisung gültig ist die mit ExecSQL ausgeführt wird/werden soll.

http://docwiki.embarcadero.com/Libra...and.Parameters
Zitat:

Parameter können mit der Eigenschaft TDBXCommand.Parameters hinzugefügt.
...das wichtigste sind auch Parameter. :thumb: Stichwort: SQL Injection.


Die Lösung hast doch schon... :gruebel:
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.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;
Hast du den letzten Stand des Beispiels?

Zitat:

Exception-Klasse TDBXError mit Meldung 'You have an error in your SQL syntax...
Das sagt doch alles. Wie sehen die einzelnen CommandText an jedem ExecSQL aus? (Debugger) :gruebel:

Hinweis:
Hast du dich mal mit der MySQL Lizenzfalle (libmysql.dll) beschäftigt?
http://www.entwickler-ecke.de/viewto...er=asc&start=0
...oder anders gefragt: Warum ist die Entscheidung auf MySQL gefallen?

AnfängerDelphi 31. Mär 2017 17:49

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

mal ein paar Grundinformationen.
Zitat:

Zitat von haentschman
...oder anders gefragt: Warum ist die Entscheidung auf MySQL gefallen?

Die Entscheidung eine Mysql-Datenbank zu benutzen,kommt nicht von mir,sondern wird durch die Software vorgegeben,die ich verwende.
Mein Ziel ist es,die Daten von einer bestehenden Mysql-Datenbank in die neue Datenbank zu übertragen,ohne Zwischenspeicherung.

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.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;
Die fehlende CommandText Zeile habe ich schon eingefügt,aber der Fehler hängt mit der zweiten Insert-Anweisung zusammen.
Wenn ich die zweite Insert-Anweisung auskommentiere funktioniert es problemlos.
Aber ich benötige auch die zweite Insert-Anweisung.

Zitat:

Hast du dich auch mit den Grundlagen der DBX Komponente befaßt?
Nein,habe ich bis jetzt noch nicht gemacht.
Ich schaue mir es mal genauer an und werde es auch ausprobieren.

Zitat:

Zitat von jobo
Der nächste Verwandte der Anonymen Blöcke sind die Stored Procedures

Ich habe mir mal kurz die Infos dazu durchgelesen,klingt auf jeden Fall mal nicht schlecht.
Kann ich meine Insert-Anweisungen so übernehmen?

Gruß AnfängerDelphi

haentschman 31. Mär 2017 18:01

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Hallöle...:P
Ich glaube nicht das mit der 2. Anweisung zusammenhängt...bestenfalls mit dem Statement was du ausführen willst. In diesem Statement hast du einen Syntaxfehler drin. :?
Lasse dir das Statement mal über den Debugger anzeigen und schreibe es mal hier rein....:thumb: Prüfe ob die Tabellen im Ziel existieren etc.
Es könnte sein, daß das
Delphi-Quellcode:
SQLDataSet1.Close;
vor jedem Command.Text erwartet wird. :gruebel:
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:

use near '.datenbank_alt.Tabelle47 where
...in der Fehlermeldung steht: .datenbank_alt...da ist vor der datenbank_alt ein Punkt? :gruebel: Im Beispiel ist keiner: from datenbank_alt.Tabelle47 where
Deshalb brauchen wir das Original aus dem Debugger...
Zitat:

Ich schaue mir es mal genauer an und werde es auch ausprobieren.
...schaue dir als allererstes die Parameter und deren Verwendung an...da hast du weniger Streß mit QuotedStr Orgien. :thumb:

AnfängerDelphi 2. Apr 2017 19:34

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

Zitat:

Zitat von haentschman
Was ist mit dir los? Gleich die Flinte ins Korn werfen wenn etwas nicht auf Anhieb funktioniert.

Ich habe leider nicht immer so viel Zeit zur Verfügung,weil ich dies noch neben meiner regulären Arbeit mache.

Hab mal ein bißchen herumexperimentiert und folgendes herausgefunden.

Wenn ich meine originale Insert-Anweisung so in das SQL-Fenster in der Datenbank direkt eintrage,funktioniert es so,wie es sein soll.
Nur müßte ich dann immer von Hand den Zähler setzen und dies möchte ich ja durch eine Schleife ersetzen.
Dies hier ist nur ein Beispiel zu meinem Original,aber identisch.

SQL-Code:
  insert into datenbank_neu.Tabelle5 (spalte1,spalte2,spalte3)
  select spalte5,0,spalte12
  from datenbank_alt.Tabelle20 where datenbank_alt.Tabelle20.reihenfolge = 5

  insert into datenbank_neu.Tabelle42 (spalte1)
  select spalte5
  from datenbank_alt.Tabelle47 where datenbank_alt.Tabelle55.reihenfolge = 5
Ich habe mir auch das mit SQLStoredProc durchgelesen,aber so richtig klar komme ich damit nicht.
Müßte dies dann so aussehen???
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var z : Integer;
begin
  for z := 5 to 10 do
  begin
  SQLStoredProc.Close;
  SQLStoredProc.CommandText :=
  'insert into datenbank_neu.Tabelle5 (spalte1,spalte2,spalte3)' +
  'select spalte5,0,spalte12' +
  'from datenbank_alt.Tabelle20 where datenbank_alt.Tabelle20.reihenfolge =' + IntToStr(z)+';';+
  'insert into datenbank_neu.Tabelle42 (spalte1)' +
  'select spalte5 ' +
  'from datenbank_alt.Tabelle47 where datenbank_alt.Tabelle55.reihenfolge =' + IntToStr(z)+';';
  SQLStoredProc.ExecProc;
Die Verbindung zur Datenbank stelle ich über einen separaten Button her,bevor ich den Button4 anklicke und die Anweisung ausführe.

Gruß AnfängerDelphi

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

haentschman 5. Apr 2017 10:20

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

Dann hängst Du den Source an Deinen nächsten Beitrag und die halbe Miete
...liest du eigentlich was die anderen schreiben? :gruebel:
Zitat:

Mit dem Debugger kenne ich mich auch nicht aus.
...hast du die Tutorials durchgearbeitet? Wenn NEIN brauchen wir hier nicht weitermachen. Du willst Autofahren aber weißt nur wie die Tür aufgeht. :?
Zitat:

Bau Dir ein Miniprogramm ... und step das im Debugmodus durch, Du wirst sehen das ist kinderleicht!
Laß mal deine Schleife, incl. Datenbank, außen vor und beschäftige dich damit. :thumb:

AnfängerDelphi 6. Apr 2017 18:43

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich bedanke mich erstmal für die guten Ratschläge und werde,wenn es die Zeit zuläßt,mich mit dem Debugger näher beschäftigen.
Im Anhang befindet sich meine originale Projektdatei.

Gruß AnfängerDelphi


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 Uhr.

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