Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL UPDATE funzt nicht. Finde den Fehler nicht (https://www.delphipraxis.net/27657-sql-update-funzt-nicht-finde-den-fehler-nicht.html)

hubertus223 13. Aug 2004 15:12


SQL UPDATE funzt nicht. Finde den Fehler nicht
 
HAllo Leute,

habe folgende SQL-Query:

query := Pchar('UPDATE firmen SET lzumin = '+inttostr(vergmin)+'WHERE firmenname ="+firmenname+"');


wenn ich alles ab WHERE weg lasse, funzt das Update, jedoch eben alle Datensätze.
Sobald ich mit Where einen bestimmten Datensat anwählen möchte, werden die Daten nicht mehr eingetragen.
Ich vermute es liegt an der Schreibweise der " oder ' bei der variablen firmenname.
Wer kannmir helfen

teebee 13. Aug 2004 15:14

Re: SQL UPDATE funzt nicht. Finde den Fehler nicht
 
Verwende 'QuotedStr()',

Gruß, teebee

Bowler 13. Aug 2004 15:15

Re: SQL UPDATE funzt nicht. Finde den Fehler nicht
 
Bei mir hilf es grundsätzlich, wenn ich mir den String ausgeben lasse, anstelle ihn direkt an die DB zu schicken. Dann kann ich gucken, ob mein Programm den String korrekt zusammen gebaut hat.

Bei Deinem SQL-Statement würde ich spontan sagen, dass vor dem WHERE ein Leerzeichen fehlt. Wenn das noch nicht reicht, dann lass dir das Statement zum Debuggen einmal mit ShowMessage ausgeben, und prüfe, ob die ' alle richtig gesetzt werden.

Gruß
Christian

Bernhard Geyer 13. Aug 2004 15:15

Re: SQL UPDATE funzt nicht. Finde den Fehler nicht
 
Stimmt. Statt " wird in SQL auch '-Verwendet:
Delphi-Quellcode:
str := Format('UPDATE firmen SET lzumin = %d WHERE firmenname = ''%s'')', [vergmin, firmenname]);
query := Pchar(str)

hubertus223 13. Aug 2004 15:32

Re: SQL UPDATE funzt nicht. Finde den Fehler nicht
 
ich glaub ich bin zu doof. funzt alle snicht oder ich mach irgenbdwas falsch.

Markus 13. Aug 2004 15:59

Re: SQL UPDATE funzt nicht. Finde den Fehler nicht
 
So müsste es gehen:

Delphi-Quellcode:
query := Pchar('UPDATE firmen SET lzumin = "'+inttostr(vergmin)+'" WHERE firmenname ="'+firmenname+'";');

Bowler 13. Aug 2004 16:13

Re: SQL UPDATE funzt nicht. Finde den Fehler nicht
 
Der Vollständigkeit halber:
Wir haben es gerade gelöst.

Es war zu Beginn im Grunde alles richtig, es fehlten um +firmenname+ nur jeweils nochmal die Hochkommata. In der Form oben hat Delphi die Variable firmenname nicht als Variable erkannt, sondern ganz normal als String. Deshalb hat die Datenbank versucht, alle Datensätze mit der Firma +firmenname+ zu bearbeiten.

Also müsste es komplett heissen (mit Delphi-Tags, der Lesbarkeit halber):

Delphi-Quellcode:
query := Pchar('UPDATE firmen SET lzumin = '+inttostr(vergmin)+' WHERE firmenname ='''+firmenname+'''');
@Markus: wieso das Semikolon im SQL-Statement?

Gruß
Christian

Markus 13. Aug 2004 17:04

Re: SQL UPDATE funzt nicht. Finde den Fehler nicht
 
Naja, ich hab nur Delphi 7 Personal und benutze MySQL direct, da müssen die mit rein :-)

Leuselator 13. Aug 2004 18:16

Re: SQL UPDATE funzt nicht. Finde den Fehler nicht
 
[KlugscheissModeOn]
Nach einer mehr oder minder langen Reihe derartiger "Erfolgserlebnisse" gewöhnt man sich die Nummer mit den Fest in QueryTexte eingebauten Übergabewerten ab und steigt auf Parameter um, auch wenn es ein paar Zeilen Code mehr werden - richtig lustig wird es nämlich erst mit Datumswerten und unterschiedlichen DatumsFormatEinstellungen zwischen Client und Server...
[KlugscheissModeOff]

Gruß

Bowler 16. Aug 2004 08:48

Re: SQL UPDATE funzt nicht. Finde den Fehler nicht
 
Gut gemacht. :)
Hast Du normalerweise auch recht. Aber hubertus223 verwendet die MySQL-Direct-Sachen, ich bin mir nicht sicher, ob die Parameter können. Ich habe die mal in FreePascal eingesetzt, und da funktionierte das nicht. Wenn ich DB-Sachen schreibe, dann kommen auch immer Parameter vor, ist übersichtlicher und sicherer, und abgesehen von den paar Zeilen extra, nicht wirklich schwierig.


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