Entwickler-Ecke
Datenbanken - Datensatz ändern per SQL
Nikola - Do 06.02.03 15:09
Titel: Datensatz ändern per SQL
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 - 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 - 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 - 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.
GuGl - 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
Nikola - 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 - 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 - So 09.02.03 23:37
Hallo AceTheFace,
Du hast Recht, in WHERE wahr ein Schreibfehler :autsch:
Danke jetzt klapt es.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!