| Autor |
Beitrag |
Nikola
      
Beiträge: 55
Win 3.11, Win 98, Win 2000, Win XP
D 1.0 C/S, D6 Prof. 2005 Prof.
|
Verfasst: Do 06.02.03 15:09
Hallo,
Wie kann ich per SQL ein Datensatz ändern,
ZB.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| DM.TerminalDB.Close; DM.TerminalDB.SQL.Clear; DM.TerminalDB.SQL.add('select * from terminal where'); DM.TerminalDB.SQL.add('LfdNr='+#39+IntToStr(BDE.LfdNr)+#39); DM.TerminalDB.Open; if (DM.TerminalDB.RecordCount>0) then begin DM.TerminalDB.SQL.add('UPDATE terminal'); DM.TerminalDB.SQL.add('SET P_und_U_Zeit='+#39+IntToStr(20)+#39); DM.TerminalDB.SQL.add('SET Start='+#39+IntToStr(1000)+#39); DM.TerminalDB.SQL.add('SET Stopp='+#39+IntToStr(500)+#39); DM.TerminalDB.SQL.add('SET Bemerkung='+#39+'Prüfung'+#39); try DM.TerminalDB.ExecSQL; except on E : Exception do ShowMessage(E.Message); end; DM.TerminalDB.Close; DM.TerminalDB.Refresh; end; |
kann das funktionieren wenn nicht was mache ich falsch
Mit freundlichen Grüßen
Nikola
|
|
bis11
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: Do 06.02.03 15:34
Also so auf den ersten Blick sehe ich keine Fehler. Allerdings finde ich etwas komisch, warum Du die Integerwerte in Strings umwandelst. Du kannst doch die direkt in die Datenbank schreiben. Dazu muß allerdings das Feld vom Typ Integer sein.
|
|
Nikola 
      
Beiträge: 55
Win 3.11, Win 98, Win 2000, Win XP
D 1.0 C/S, D6 Prof. 2005 Prof.
|
Verfasst: Do 06.02.03 16:27
Hallo,
es kommt imer Error Code 1064
Fehler in der Syntax bei 'UPDATE' terminal
...
in Zeile 3.'.
datenbank ist mySQL
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Do 06.02.03 16:39
Hallo,
bei UPDATE darf SET nur einmal vorkommen. Alle zu ändernden Felder, müssen durch Kommas getrennt werden.
In etwa so:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| ... with DM.TerminalDB do begin SQL.Add('UPDATE terminal'); SQL.Add('SET P_und_U_Zeit='+#39+IntToStr(20)+#39+', '); SQL.Add(Start='+#39+IntToStr(1000)+#39+', '); ... SQL.add('SET Bemerkung='+#39+'Prüfung'+#39); end; // with ... |
#39 kannst Du Dir auch sparen: entweder Du benutzt QuotedStr oder Du schreibst 2 mal die Hochkommas hintereinander.
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
Zuletzt bearbeitet von smiegel am Do 06.02.03 16:41, insgesamt 1-mal bearbeitet
|
|
GuGl
      
Beiträge: 35
|
Verfasst: Do 06.02.03 16:40
Hallo Nikola,
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| DM.TerminalDB.Close; DM.TerminalDB.SQL.Clear; DM.TerminalDB.SQL.add('select * from terminal where'); DM.TerminalDB.SQL.add('LfdNr='+#39+IntToStr(BDE.LfdNr)+#39); DM.TerminalDB.Open; if (DM.TerminalDB.RecordCount>0) then begin // diese 2 Zeilen einfügen: DM.TerminalDB.close; // Query schließen !! DM.TerminalDB.SQL.Clear; // SQL.Text wird gelöscht !!!
DM.TerminalDB.SQL.add('UPDATE terminal'); DM.TerminalDB.SQL.add('SET P_und_U_Zeit='+#39+IntToStr(20)+#39); DM.TerminalDB.SQL.add('SET Start='+#39+IntToStr(1000)+#39); DM.TerminalDB.SQL.add('SET Stopp='+#39+IntToStr(500)+#39); DM.TerminalDB.SQL.add('SET Bemerkung='+#39+'Prüfung'+#39); try DM.TerminalDB.ExecSQL; except on E : Exception do ShowMessage(E.Message); end; DM.TerminalDB.Close; DM.TerminalDB.Refresh; end; |
wenn du den sql.clear nicht machst, bleibt der vorherige SQL-Befehl erhalten und der neue wird einfach angehängt
_________________ Gruß, GuGl
|
|
Nikola 
      
Beiträge: 55
Win 3.11, Win 98, Win 2000, Win XP
D 1.0 C/S, D6 Prof. 2005 Prof.
|
Verfasst: Do 06.02.03 17:13
Der Fehler ist noch immer da,
PS.
es soll nicht eingefügt werden sonder vorhandener Datensatz geändert werden.
Mit freundlichen Grüßen
Nikola
|
|
AceTheFace
      
Beiträge: 39
|
Verfasst: So 09.02.03 13:21
| Nikola hat folgendes geschrieben: | Der Fehler ist noch immer da,
PS.
es soll nicht eingefügt werden sonder vorhandener Datensatz geändert werden.
Mit freundlichen Grüßen
Nikola |
Weiß zwar nicht obs daran liegen könnte, aber warum schliesst du denn die Query die ganze Zeit
Ansonsten lautet die Syntax einer SQL-Update-Anweisung:
UPDATE tabelle SET feld1=wert1, feld2=wert2 WHERE eigenschaft=wert3
Gruß,
Ace
|
|
Nikola 
      
Beiträge: 55
Win 3.11, Win 98, Win 2000, Win XP
D 1.0 C/S, D6 Prof. 2005 Prof.
|
Verfasst: So 09.02.03 23:37
Hallo AceTheFace,
Du hast Recht, in WHERE wahr ein Schreibfehler
Danke jetzt klapt es.
|
|