![]() |
QuotedStr und sql-update
hallo.
hier erst ma der quelltext:
Delphi-Quellcode:
im großen und ganzen funktioniert der update-befehl, nur kommen fehlermeldungen. schaue ich mir danach die datenbank an, ist aber der entsprechende wert geändert. das ist lästig. wo mache ich einen fehler?!
DM_Tabelle.adoquery1.active:=false;
DM_Tabelle.adoquery1.sql.clear; { nach Name sortieren a -> z } {DM_Tabelle.adoquery1.sql.add('select * from tabelle1 order by name asc');} try DM_Tabelle.adoQuery1.Sql.Add('UPDATE tabelle1 SET Name='+QuotedStr(EditName.Text)+' WHERE name = '+ QuotedStr('irgendwas')+''); except messagedlg('Irgendwas passt nicht',mterror,[mbok],0); end; DM_Tabelle.adoquery1.active:=true; schreibe ich im anschluss folgenden befehle, so werden diese einfach ignoriert:
Delphi-Quellcode:
was mache ich falsch? ist der update befehl so richtig?! :gruebel:
DM_Tabelle.adoquery1.active:=false;
DM_Tabelle.adoquery1.sql.clear; DM_Tabelle.adoquery1.sql.add('select * from tabelle1 order by punkte desc'); DM_Tabelle.adoquery1.active:=true; gruß marcus |
Re: QuotedStr und sql-update
Welche Fehlermeldungen?
In der WHERE Klausel sollte das Kriterium stehen, welche Datensätze Du ändern willst, also bei einem Datensatz normalerweise der Primary Key. Vielleicht solltest Du vor dem Update das alte SQL Statement mit .Clear wieder löschen. |
Re: QuotedStr und sql-update
es kommt folgende meldung:
Delphi-Quellcode:
aber der wert wird ja in die datenbank eingetragen, komisch :?:
AdoQuerry1: CommandText does not return a result set
kann man den sql-befehl auch notfalls anders hinbekommen? |
Re: QuotedStr und sql-update
Ok,
Normalerweise erwartet ein geöffnete Datenmange, dass als Ergebnis Datensätze zurückgeliefert werden. Wenn Du jetzt ein Delete,Update oder Insert machst, wird kein Ergebnis zurückgeliefert - die Aktion aber selbstverständlich ausgeführt. Wie es bei Ado ist, weiss ich leider nicht, aber bei einer TQuery kannst Du entweder mit Open (Active := true) die Datenmenge öffnen, wenn Du Datensätze als Ergebnis erwartest oder TQuery geschlossen halten und mit ExecSQL ein SQL-Statement absetzen, was keine Datenmenge zurückliefert. Bei ADO musst Du mal in der Hilfe nach ExecSQL oder RunSQL oder ähnlichen suchen. Dann darfst Du die Datenmenge nicht aktivieren (active := true) sondern nur mit diesem Befehl (ExecSQL) den Befehl absetzen. Geht nicht: (natürlich nur beim aktuellen Datensatz) Adoquery.Edit; Adoquery.FieldByName('Name').AsString := 'irgendetwas' Adoquery.Post; ?????? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 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-2025 by Thomas Breitkreuz