@Privateer3000
[...SNIP...]
Simples Beispiel:
ZUpdateSQL1.ModifySQL := 'update tabelle1 set tabelle1.Feld1 = :Feld1; //funktioniert auch! Feld1 sollte aber im selct der TZQuery entahlten sein.
ZQuery1.UpdateObject := ZUpdateSQL1;
ZQuery1.Edit;
ZQuery1.ParamByName('Feld1'').AsString := 'Test';
ZQuery1.Post;
Ich hoffe dies war etwas verständlicher.
Gruß Michael
Ich habe jetzt stundenlang alles Mögliche probiert und auch im Internet gesucht, aber so richtig kriege ich es nicht hin.
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:
//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;
a) Wenn ich nun starte, ist die Fehlermeldung sinngemäss, dass die Komponente nicht aktiv ist.
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