Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi QuotedStr und sql-update (https://www.delphipraxis.net/10201-quotedstr-und-sql-update.html)

markon 13. Okt 2003 16:42


QuotedStr und sql-update
 
hallo.
hier erst ma der quelltext:
Delphi-Quellcode:
 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;
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?!

schreibe ich im anschluss folgenden befehle, so werden diese einfach ignoriert:
Delphi-Quellcode:
 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;
was mache ich falsch? ist der update befehl so richtig?! :gruebel:

gruß
marcus

Honie 13. Okt 2003 16:49

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.

markon 13. Okt 2003 16:54

Re: QuotedStr und sql-update
 
es kommt folgende meldung:
Delphi-Quellcode:
AdoQuerry1: CommandText does not return a result set
aber der wert wird ja in die datenbank eingetragen, komisch :?:

kann man den sql-befehl auch notfalls anders hinbekommen?

Honie 13. Okt 2003 17:13

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