AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQLDataSet

Ein Thema von juelin · begonnen am 20. Dez 2017 · letzter Beitrag vom 21. Dez 2017
Antwort Antwort
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#1

SQLDataSet

  Alt 20. Dez 2017, 21:01
Datenbank: MySql • Version: 5.6.24 • Zugriff über: 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
Jürgen Linder
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#2

AW: SQLDataSet

  Alt 20. Dez 2017, 21:47
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);

Geändert von Delphi.Narium (21. Dez 2017 um 10:59 Uhr)
  Mit Zitat antworten Zitat
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#3

AW: SQLDataSet

  Alt 20. Dez 2017, 22:00
Der Compiler sagt: SQLDataSet1.SQL (SQL kennt er nicht).
Komponenete ist aus DBExpress
Jürgen Linder
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#4

AW: SQLDataSet

  Alt 20. Dez 2017, 22:02
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#5

AW: SQLDataSet

  Alt 20. Dez 2017, 22:30
Suchmaschinen findet: https://www.delphi-treff.de/tutorial...d-dbexpress/4/

Dort ab: INSERT INTO Tabelle (Spalte1, SpalteN) VALUES (:Spalte1, :SpalteN)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: SQLDataSet

  Alt 20. Dez 2017, 22:39
Unter Umständen bringt Dich .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 .SQL.Text gewesen)
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (20. Dez 2017 um 22:42 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#7

AW: SQLDataSet

  Alt 20. Dez 2017, 22:49
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
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: SQLDataSet

  Alt 20. Dez 2017, 23:19
vergesst es , es ist zu spät.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: SQLDataSet

  Alt 21. Dez 2017, 01:26
Hallo,
ich würde das erst mal etwas auseinandernehmen

Delphi-Quellcode:
var
  sSQL: String;
begin
  sSQL:= 'Insert Into' ..
  
  Form1.SQLDataSet1.CommandText:= sSQL;
end;
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: SQLDataSet

  Alt 21. Dez 2017, 09:08
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 09:37 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