Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQLDataSet (https://www.delphipraxis.net/194680-sqldataset.html)

juelin 20. Dez 2017 20:01

Datenbank: MySql • Version: 5.6.24 • Zugriff über: SQLDataSet

SQLDataSet
 
Habe Windows 7 und Delphi XE5
Habe ein Programm mit unter anderen ein SQLDataSet mit dem ich auf eine MySQL Datenbank
zugreife (nur Insert, Update und Delete).

Habe ein Programm:
......
Form1.SQLDataSet1.CommandText:='INSERT INTO ware (Ware, Warengruppe, Mengeneinheit, Menge, MWST, Preis, Aus) values ('''+wa5+''', '''+wg5+''', '''+me5+''', '''+f1+''', '''+f2+''', '''+f3+''', '''+wk5+''')';
h1:=Form1.SQLDataSet1.ExecSQL(False);
.......
Form1.SQLDataSet1.CommandText:='INSERT INTO finanzamt (Tabelle, Zeit, Art, PNR, Feld1, Feld2, Feld3, Feld4, Feld5, Feld6, Feld7, Feld8, Feld9, Feld10, Feld11, Feld12, Feld13, Feld14, Feld15, Feld16, Feld17) values ('''+'Ware'+''', '''+fiz+''', '''+'1'+''', '''+IntToStr(pnr)+''', '''+wa5+''', '''+wg5+''', '''+me5+''', '''+f1+''', '''+f2+''', '''+f3+''', '''+wk5+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''')';
h1:=Form1.SQLDataSet1.ExecSQL(False);

........

Wenn ich das Programm compeliere erschein vor jdem Befehl vorne links ein Punktt in der IDE
(wie Haltepunkte).

Dummerweise fehlen die Punkte vor dem ersten
h1:=Form1.SQLDataSet1.ExecSQL(False);
bis zum Befehl
Form1.SQLDataSet1.CommandText:='INSERT INTO finanzamt (Tabelle, Zeit, Art, PNR, Feld1, Feld2, Feld3, Feld4, Feld5, Feld6, Feld7, Feld8, Feld9, Feld10, Feld11, Feld12, Feld13, Feld14, Feld15, Feld16, Feld17) values ('''+'Ware'+''', '''+fiz+''', '''+'1'+''', '''+IntToStr(pnr)+''', '''+wa5+''', '''+wg5+''', '''+me5+''', '''+f1+''', '''+f2+''', '''+f3+''', '''+wk5+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''', '''+''+''')';
und natürlich führt das Programm die Befehle (ohne Punkt) auch nicht aus.

Ich verstehe nicht warum.
Kann da jemand helfen?

Danke und Gruß
Jürgen

Delphi.Narium 20. Dez 2017 20:47

AW: SQLDataSet
 
Versuchs mal mit parametrisierten Statements. Bei der Unmenge von ' fehlt ja vollkommen der Durchblick, was da wie zusammengehören soll.

Ungefähr so:
Delphi-Quellcode:
Form1.SQLDataSet1.SQL.Clear;
Form1.SQLDataSet1.SQL.Add('INSERT INTO ware (Ware, Warengruppe, Mengeneinheit, Menge, MWST, Preis, Aus) ');
Form1.SQLDataSet1.SQL.Add('values (:wa5,:wg5,:me5,:f1,:f2,:f3,:wk5)');
Form1.SQLDataSet1.Params.ParamByName('wa5').Value := wa5;
Form1.SQLDataSet1.Params.ParamByName('wg5').Value := wg5;
Form1.SQLDataSet1.Params.ParamByName('me5').Value := me5;
Form1.SQLDataSet1.Params.ParamByName('f1').Value := f1;
Form1.SQLDataSet1.Params.ParamByName('f2').Value := f2;
Form1.SQLDataSet1.Params.ParamByName('f3').Value := f3;
Form1.SQLDataSet1.Params.ParamByName('wk5').Value := wk5;

h1 := Form1.SQLDataSet1.ExecSQL(False);

juelin 20. Dez 2017 21:00

AW: SQLDataSet
 
Der Compiler sagt: SQLDataSet1.SQL (SQL kennt er nicht).
Komponenete ist aus DBExpress

himitsu 20. Dez 2017 21:02

AW: SQLDataSet
 
SQL = CommandText ?
Kennt sie wenigstens .Params oder etwas Dergleichen?


Und da jemand nur Bruchteile seines Quellcodes zeigt, anstatt einen größeren Ausschnitt, wie der betreffende Code und ein bissl drumrum wirklich aussieht ... da habe ich keine Lust sinnlos meine Glaskugel rauszukramen.

Delphi.Narium 20. Dez 2017 21:30

AW: SQLDataSet
 
Suchmaschinen findet: https://www.delphi-treff.de/tutorial...d-dbexpress/4/

Dort ab:
SQL-Code:
INSERT INTO Tabelle (Spalte1, SpalteN) VALUES (:Spalte1, :SpalteN)

p80286 20. Dez 2017 21:39

AW: SQLDataSet
 
Unter Umständen bringt Dich
Delphi-Quellcode:
.CommandText
weiter?

Gruß
K-H

P.S.
@Himitsu Pardon habe Deinen letzten Post nicht richtig gelesen
(wenn ich mich nicht irre wäre es sowieso
Delphi-Quellcode:
.SQL.Text
gewesen)

Delphi.Narium 20. Dez 2017 21:49

AW: SQLDataSet
 
Im Eingangspost werden aber doch Probleme damit beschrieben ;-)

Das Hauptproblem ist das Zusammensetzen der Statements mit Unmengen von ' und +, mit der Nutzung von Paramtern dürfte das Ganze deutlich übersichtlicher werden und wenn man die (laut Doku dafür vorgesehene) Komponente TSQLQuery nutzt, wird es deutlich einfacher.

Using dbExpress Datasets
Types of dbExpress Datasets

p80286 20. Dez 2017 22:19

AW: SQLDataSet
 
vergesst es , es ist zu spät.

hoika 21. Dez 2017 00:26

AW: SQLDataSet
 
Hallo,
ich würde das erst mal etwas auseinandernehmen

Delphi-Quellcode:
var
  sSQL: String;
begin
  sSQL:= 'Insert Into' ..
 
  Form1.SQLDataSet1.CommandText:= sSQL;
end;

p80286 21. Dez 2017 08:08

AW: SQLDataSet
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1389371)
Im Eingangspost werden aber doch Probleme damit beschrieben ;-)

Das Hauptproblem ist das Zusammensetzen der Statements mit Unmengen von ' und +, mit der Nutzung von Paramtern dürfte das Ganze deutlich übersichtlicher werden und wenn man die (laut Doku dafür vorgesehene) Komponente TSQLQuery nutzt, wird es deutlich einfacher.

OK das ist milde gesagt unübersichtlich, insbesonders die Variablennamen sind so sprechend. Aber ohne den original Source ist das sowiso nur stochern im Nebel.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:34 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