![]() |
AW: SQL UPDATE will nicht
:?:Grad mal selber gecheckt, et voila: Oija, doch doch :P Funzt wunderbar. :o
Gugst du: :cyclops: Zitat:
Grüßle |
AW: SQL UPDATE will nicht
Zitat:
ich sollte mal auf alles doppelklicken was mir übern Weg hoppelt. Danke für den Tipp! Grüße |
AW: SQL UPDATE will nicht
Zitat:
Ich mag einfach eine beliebige Tabelle ändern wollen (baue gerade eine immense Applikation um und mag nicht für jede Tabelle etwas Eigenes bauen an u-i-d) und hatte die Idee, den U-Fall über eine Query zu tun. Nutze Delphi XE2 Starter, mySQL 5.5, Zeos 7 Wie mache ich das am Schlauesten? Mein bisheriger Code funktioniert nicht, egal wie ich es anstelle. Mein momentaner Code ist wieder möglichst einfach und orientiert an Deinem Beispiel:
Delphi-Quellcode:
a) Wenn ich nun starte, ist die Fehlermeldung sinngemäss, dass die Komponente nicht aktiv ist.
//DataModul.ZQuery_Updater.SQL.Clear;
//DataModul.ZQuery_Updater.SQL.Add('Select * from '+Schema+Tabellenname); DataModul.ZUpdateSQL_Updater.ModifySQL.Clear; DataModul.ZUpdateSQL_Updater.ModifySQL.Add('UPDATE '+Schema+Tabellenname); DataModul.ZUpdateSQL_Updater.ModifySQL.Add('SET '+Schema+Tabellenname+'.'+Feldname+'= :Val1'); DataModul.ZUpdateSQL_Updater.ModifySQL.Add('WHERE '+Schema+Tabellenname+'.'+Indexfeld+'=:'+CHR(39)+inttostr(ID_Wert)+CHR(39)+';'); DataModul.ZQuery_Updater.UpdateObject:=DataModul.ZUpdateSQL_Updater; DataModul.ZQuery_Updater.Edit; DataModul.ZQuery_Updater.Params.ParamByName('Val1').AsString:=neuer_Wert; DataModul.ZQuery_Updater.Post; b) Aktiviere ich sie vorher mit ACTIVE oder OPEN, heisst es, der SQL-Code wäre leer. c) Fülle ich den SQL-Code (siehe die beiden ersten Zeilen) wird es zum einen sehr langsam, zum anderen findet er den Parameter nicht, obwohl ich den in beiden Komponenten auch mal deklariert habe. d) Ich habe es mit EXECSQL und dem obigen Code einfach in der Query (ohne ZUpdateSQL) auch schon geschafft, dass das fehlerfrei durchläuft, aber dann wird der Wert in der DB nicht geändert - trotz Autocommit TRUE der Connection. Was mache ich falsch oder: Gibt es ein einfaches Beispiel, das ich nutzen kann, bei dem ich mit einer Komponente Query eine Tabelle ändern kann, bei der ich einen Indexfeldwert habe und einen Wertfeldnamen (und einen Wert)? Viele Grüße, David |
AW: SQL UPDATE will nicht
...manchmal ist es so einfach... ich hatte da einen Doppelpunkt zuviel, und beim posten hab ich's gemerkt. :-)
Ich nutze jetzt erst mal das Folgende:
Delphi-Quellcode:
Viele Grüße & Sorry,
DataModul.ZQuery_Updater.SQL.Clear;
DataModul.ZQuery_Updater.SQL.Add('UPDATE '+Schema+Tabellenname); DataModul.ZQuery_Updater.SQL.Add('SET '+Schema+Tabellenname+'.'+Feldname+'= :Val1'); DataModul.ZQuery_Updater.SQL.Add('WHERE '+Schema+Tabellenname+'.'+Indexfeld+'='+CHR(39)+inttostr(ID_Wert)+CHR(39)+';'); DataModul.ZQuery_Updater.Params.ParamByName('Val1').AsString:=neuer_Wert; DataModul.ZQuery_Updater.ExecSQL; David |
AW: SQL UPDATE will nicht
Wieso nutzt Du einmal SQL-Parameter und einmal nicht? Wie ist es so (ungetestet)?
Delphi-Quellcode:
const
UPDATE_SQL = 'UPDATE %s%s SET %s%s.%s = :Val1 WHERE %s%s.%s = :Val2'; begin DataModul.ZQuery_Updater.SQL.Text := Format(UPDATE_SQL, [Schema, Tabellenname, Schema, Tabellenname, Feldname, Schema, Tabellenname, Indexfeld]); DataModul.ZQuery_Updater.Params.ParamByName('Val1').Value := neuer_Wert; DataModul.ZQuery_Updater.Params.ParamByName('Val2').Value := ID_Wert; DataModul.ZQuery_Updater.ExecSQL; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 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