AGB  ·  Datenschutz  ·  Impressum  







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

Syntax SQL Update

Ein Thema von akio87 · begonnen am 1. Jul 2015 · letzter Beitrag vom 23. Jul 2015
Antwort Antwort
Seite 1 von 2  1 2      
akio87

Registriert seit: 18. Mär 2010
44 Beiträge
 
Delphi XE8 Architect
 
#1

Syntax SQL Update

  Alt 1. Jul 2015, 00:09
Datenbank: MySQL • Version: 5 • Zugriff über: Ka
Hallo,

ich habe aktuell ein SQL Query Update Syntax problem...

ich habe bereits schon viele Schreibweisen ausprobiert und jedesmal kommt eine Fehlermeldung an unterschiedlicher stelle, wie angehängt.

Ich hatte schon alle Edits in QuotedStr() gepackt, schon "" weggelassen und [""] ausprobiert, aber nichts hilft...

Habt Ihr eine schnelle abhilfe für mich?

Aktuell:

Code:
  MainModule.UniMainModule.mySQLQuery1.SQL.Text :=         'update `' + UniMainModule.SQLTabelle + '`' + #10 +
                                                            'set' + #10 +
                                                            ' Vorname = "'+UniEdit8.Text+'",'+ #10 +
                                                            ' Name = "'+UniEdit12.Text+'",'+ #10 +
                                                            ' user = "'+lowercase(UniEdit13.Text)+'",'+ #10 +
                                                            ' Firma = "'+UniEdit1.Text+'",'+ #10 +
                                                            ' Adress1 = "'+UniEdit2.Text+'",'+ #10 +
                                                            ' Adress2 = "'+UniEdit3.Text+'",'+ #10 +
                                                            ' Straße = "'+UniEdit4.Text+'",'+ #10 +
                                                            ' PLZ = "'+ UniEdit5.Text+'",'+ #10 +
                                                            ' Ort = "'+ UniEdit6.Text+'",'+ #10 +
                                                            ' Land = "'+ UniEdit7.Text+'",'+ #10 +
                                                            ' Telefonnummer = '+ UniEdit14.Text + '' + #10 +
                                                            'where'+ #10 +
                                                            ' Vorname = '+UniMainModule.Vorname+' and'+ #10 +
                                                            ' Name = '+UniMainModule.Name+' and'+ #10 +
                                                            ' user = '+UniMainModule.user+' and'+ #10 +
                                                            ' Firma = '+UniMainModule.Firma+' and'+ #10 +
                                                            ' Adress1 = '+UniMainModule.Adress1+' and'+ #10 +
                                                            ' Adress2 = '+UniMainModule.Adress2+' and'+ #10 +
                                                            ' Straße = '+UniMainModule.Straße+' and'+ #10 +
                                                            ' PLZ = '+UniMainModule.PLZ+' and'+ #10 +
                                                            ' Ort = '+UniMainModule.Ort+' and'+ #10 +
                                                            ' Land = '+UniMainModule.Land+' and'+ #10 +
                                                            ' Telefonnummer = ' + UniMainModule.Telefon + ';';

  MainModule.UniMainModule.mySQLQuery1.ExecSQL;
Miniaturansicht angehängter Grafiken
dfa281-1435703033.png  

Geändert von TBx ( 1. Jul 2015 um 09:12 Uhr) Grund: Fehlermeldung hinzugefügt
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Syntax SQL Update

  Alt 1. Jul 2015, 01:27
Benutze Parameter ... aus mehreren Gründen

Wie und wo findest du über die Forensuche
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
hoika

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

AW: Syntax SQL Update

  Alt 1. Jul 2015, 06:22
Hallo,
das Schlimme an dem Code ist, dass er überhaupt nicht debuggbar ist.

Warum schreibst du den SQL-Befehl nicht vorher in eine Stringvariable.
Dann könntest du uns den Inhalt der Variable hier posten.

In deinem Where fehlen übrigens die Klammern um die einzelnen Abschnitte und das QuotedStr oder halt besser Parameter.


Heiko
Heiko
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Syntax SQL Update

  Alt 1. Jul 2015, 07:54
Such mal nach sog. 'Surrogate Keys'. Die sind besser geeignet, einen Datensatz eindeutig zu identifizieren.

Die einzelnen Strings in der Where-Klausel müssen mit Gänsefüßchen umschlossen werden. Das übernehmen die Parameter für Dich.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Syntax SQL Update

  Alt 1. Jul 2015, 08:53
ich habe bereits schon viele Schreibweisen ausprobiert und jedesmal kommt eine Fehlermeldung an unterschiedlicher stelle
Und wovon sind diese Unterschiede abhängig?
Und wie Dejan Vu erwähnte, in der where-Klausel müssen die Strings ebenfalls in " oder ' eingefasst werden.

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

Registriert seit: 18. Mär 2010
44 Beiträge
 
Delphi XE8 Architect
 
#6

AW: Syntax SQL Update

  Alt 16. Jul 2015, 17:15
Hallo,

er gibt mir zwar keine Fehlermeldung aus, aber es passiert auch kein Update in der Datenbank... ?!

Woran könnte es liegen?

Code:
  MainModule.UniMainModule.mySQLQuery1.SQL.Clear;
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('update `' + UniMainModule.SQLTabelle + '`');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('set');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Vorname = :Vorname,');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Name = :Name,');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('user = :user,');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Firma = :Firma,');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Adress1 = :Adress1,');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Adress2 = :Adress2,');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Straße = :Straße,');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('PLZ = :PLZ,');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Ort = :Ort,');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Land = :Land,');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Telefonnummer = :Telefonnummer');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('where');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Vorname = :OLD_Vorname and');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Name = :OLD_Name');

  MainModule.UniMainModule.mySQLQuery1.ParamByName('Vorname').AsString := UniEdit8.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Name').AsString := UniEdit12.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('user').AsString := lowercase(UniEdit13.Text);
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Firma').AsString := UniEdit1.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Adress1').AsString := UniEdit2.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Adress2').AsString := UniEdit3.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Straße').AsString := UniEdit4.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('PLZ').AsString := UniEdit5.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Ort').AsString := UniEdit6.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Land').AsString := UniEdit7.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Telefonnummer').AsString := UniEdit14.Text;

 MainModule.UniMainModule.mySQLQuery1.ExecSQL;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Syntax SQL Update

  Alt 16. Jul 2015, 17:21
Hier fehlte schon mal das Leerzeichen am Ende:
MainModule.UniMainModule.mySQLQuery1.SQL.Add('Vorname = :OLD_Vorname and '); Und hier der Strichpunkt (wenn dies meist tleriert wird):
MainModule.UniMainModule.mySQLQuery1.SQL.Add('Name = :OLD_Name;');
Markus Kinzler
  Mit Zitat antworten Zitat
akio87

Registriert seit: 18. Mär 2010
44 Beiträge
 
Delphi XE8 Architect
 
#8

AW: Syntax SQL Update

  Alt 16. Jul 2015, 17:31
Hey,

leider wird immernoch nichts in der DB akualisiert:/

Code:
  MainModule.UniMainModule.mySQLQuery1.SQL.Clear;
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('update ' + UniMainModule.SQLTabelle);
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('set ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Vorname = :Vorname, ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Name = :Name, ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('user = :user, ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Firma = :Firma, ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Adress1 = :Adress1, ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Adress2 = :Adress2, ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Straße = :Straße, ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('PLZ = :PLZ, ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Ort = :Ort, ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Land = :Land, ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Telefonnummer = :Telefonnummer ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('where ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Vorname = :OLD_Vorname and ');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Name = :OLD_Name;');

  MainModule.UniMainModule.mySQLQuery1.ParamByName('Vorname').AsString := UniEdit8.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Name').AsString := UniEdit12.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('user').AsString := lowercase(UniEdit13.Text);
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Firma').AsString := UniEdit1.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Adress1').AsString := UniEdit2.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Adress2').AsString := UniEdit3.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Straße').AsString := UniEdit4.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('PLZ').AsString := UniEdit5.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Ort').AsString := UniEdit6.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Land').AsString := UniEdit7.Text;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Telefonnummer').AsString := UniEdit14.Text;

  MainModule.UniMainModule.mySQLQuery1.ExecSQL;
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#9

AW: Syntax SQL Update

  Alt 16. Jul 2015, 17:34
Code:
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('where');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Vorname = :OLD_Vorname and');
  MainModule.UniMainModule.mySQLQuery1.SQL.Add('Name = :OLD_Name');
Und so was macht man auch nicht.
Nicht, dass das nicht funktionieren würde, aber für so was nimmt man eine ID mit autoincrement, oder macht sich notfalls eine eigene. Hauptsache sie ist eindeutig.

Ich hatte bei meinem früheren Arbeitgeber tatsächlich mal 2 Kollegen mit gleichem Vor- und Nachnamen. Kommt öfter vor, als man denkt.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#10

AW: Syntax SQL Update

  Alt 16. Jul 2015, 17:36
Logisch. Du läßt ja Old_Vorname und Old_Name leer. Somit wird auch kein Datensatz gefunden, auf den die Where-Bedingung zutrifft. Aber nochmal siehe meinen Post vorher.

Füg man diese Zeilen hinzu:
Code:
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Old_Vorname).AsString := ichmussmirdenvornamenirgendwiemerken;
  MainModule.UniMainModule.mySQLQuery1.ParamByName('Old_Name).AsString := jetztmussichmirdennachnamenauchnochirgendwiemerken;
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo

Geändert von Captnemo (16. Jul 2015 um 17:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 08:45 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