![]() |
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 |
Re: SQL UPDATE funzt nicht. Finde den Fehler nicht
Verwende 'QuotedStr()',
Gruß, teebee |
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 |
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) |
Re: SQL UPDATE funzt nicht. Finde den Fehler nicht
ich glaub ich bin zu doof. funzt alle snicht oder ich mach irgenbdwas falsch.
|
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+'";');
|
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:
@Markus: wieso das Semikolon im SQL-Statement?
query := Pchar('UPDATE firmen SET lzumin = '+inttostr(vergmin)+' WHERE firmenname ='''+firmenname+'''');
Gruß Christian |
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 :-)
|
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ß |
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 03:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz