Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Syntax SQL Update (https://www.delphipraxis.net/185709-syntax-sql-update.html)

akio87 30. Jun 2015 23:09

Datenbank: MySQL • Version: 5 • Zugriff über: Ka

Syntax SQL Update
 
Liste der Anhänge anzeigen (Anzahl: 1)
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;

Sir Rufo 1. Jul 2015 00:27

AW: Syntax SQL Update
 
Benutze Parameter ... aus mehreren Gründen

Wie und wo findest du über die Forensuche

hoika 1. Jul 2015 05:22

AW: Syntax SQL Update
 
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

Dejan Vu 1. Jul 2015 06:54

AW: Syntax SQL Update
 
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.

p80286 1. Jul 2015 07:53

AW: Syntax SQL Update
 
Zitat:

Zitat von akio87 (Beitrag 1307262)
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

akio87 16. Jul 2015 16:15

AW: Syntax SQL Update
 
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;

mkinzler 16. Jul 2015 16:21

AW: Syntax SQL Update
 
Hier fehlte schon mal das Leerzeichen am Ende:
Delphi-Quellcode:
MainModule.UniMainModule.mySQLQuery1.SQL.Add('Vorname = :OLD_Vorname and ');
Und hier der Strichpunkt (wenn dies meist tleriert wird):
Delphi-Quellcode:
MainModule.UniMainModule.mySQLQuery1.SQL.Add('Name = :OLD_Name;');

akio87 16. Jul 2015 16:31

AW: Syntax SQL Update
 
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;

Captnemo 16. Jul 2015 16:34

AW: Syntax SQL Update
 
Zitat:

Zitat von akio87 (Beitrag 1308923)
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.

Captnemo 16. Jul 2015 16:36

AW: Syntax SQL Update
 
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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr.
Seite 1 von 2  1 2      

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