![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: ZEOS7
SQL UPDATE will nicht
Hallöchen,
ich steh grad irgendwie aufm Schlauch: folgendes update:
Code:
produziert folgende Fehlermeldung:
try
v_ma:='Passwort1'; v_ta:='Passwort2'; ug:=TStringList.Create; systemquer.Active:=True; systemquer.Edit; ug.Add('update SYSTEM set MPASSWORT='+v_ma+',TAPASS='+v_ta+' where ID=1'); sysupdate.ModifySQL:=ug; { TODO 1 -oIch -cSQL : Update vervollständigen } try systemquer.Post; systemquer.Refresh; except Showmessage('Speichern fehlgeschlagen!'); end; finally ug.Free; systemquer.Active:=False; end;
Code:
Wieso soll Passwort1 "Column unknown" sein? :evil:
Execute, proto: firebird-2.1, msg: Dynamic SQL Error SQL error code = -206 Column unknown Passwort1 At line 1, column 29, errcode: -206, error: Column does not belong to referenced table The SQL: update SYSTEM set MPASSWORT=Passwort1,TAPASS=Passwort2 where ID=1
Ich hab es auch ohne Update-Kompo probiert (dyn. Query) Was passiert da? |
AW: SQL UPDATE will nicht
Da fehlen die Anführungszeichen, es handelt sich ja wohl um Strings. Wieso benutzt Du keine SQL-Parameter, abgesehen von den Sicherheitsaspekten sind solche Probleme damit auch gleich vom Tisch?
|
AW: SQL UPDATE will nicht
Weil ich nicht weiß wie bei der TZUpdateSQL von ZEOS
Parameter übergeben werden. Params.ParamByName('XY') werden nicht akzeptiert. Wie diese Parameter eingesetzt werden, hab ich keine Dok gefunden. Man kan zur Laufzeit wie auch zu Entwicklerzeit diese setzen. aber wie? Bei der TZQuery geht das einwandfrei
Code:
das funktioniert auch.
with ug do begin
Close; SQL.Clear; SQL.Text:='update SYSTEM set MPASSWORT = :MA,TAPASS = :TA where ID=1'; ParamByName('MA').Value:=v_ma; ParamByName('TA').Value:=v_ta; try ExecSQL; except Showmessage('Speichern fehlgeschlagen!'); end; end; |
AW: SQL UPDATE will nicht
Die Parameter werden automatisch mit den Werten, welche du in die Felder schreibst, belegt.
|
AW: SQL UPDATE will nicht
Zitat:
Ich seh da einfach nicht durch. Die Doks zu ZEOS sind so lückenhaft. Wie muss denn die Paramter-gedingse zur Laufzeit denn aussehen? :roll::roll: |
AW: SQL UPDATE will nicht
Mit ZEOS kenne ich mich nicht aus, aber laut
![]() |
AW: SQL UPDATE will nicht
Delphi-Quellcode:
->
DataSet.Edit;
DataSet.FieldByName(<Feld>).Value := <Wert>; Entsprechender Wert in Parameter des UpdateSQL wird gesetzt.
Delphi-Quellcode:
->
DataSet.Post;
Delphi-Quellcode:
wird ausgeführt
UpdateSQL.ExecuteSQL;
![]() |
AW: SQL UPDATE will nicht
Was dir Markus sagen will: Verwende TUpdateSQL nicht direkt sondern immer in Verbindung mit einer TQUery. Dort solltest DU im Objektinspektor die Möglichkeit haben eine TUpdateSQL-Instanz zu hinterlegen.
WEnn Du nun in der TQuery deinen Select hast (Select * from X where ID=:ID) und in der TUpdateSQL die dazugehörigen DML-Befehle (die ggf. auch automatisch anhand der Select erzeugt werden), dann arbeitest Du ganz einfach mit der Query:
Delphi-Quellcode:
und die Query und TUpdateSQL übernehmen den REst.
Query.OPen;
Query.Update; Query.FieldByName('eins').AsString := 'eins'; Query.Post; |
AW: SQL UPDATE will nicht
Abgesehen von dem bisher geschriebenen,
was haben systemquer und sysupdate miteinander zu tun?
Delphi-Quellcode:
Gruß
try
v_ma:='Passwort1'; v_ta:='Passwort2'; ug:=TStringList.Create; systemquer.Active:=True; systemquer.Edit; ug.Add('update SYSTEM set MPASSWORT='+v_ma+',TAPASS='+v_ta+' where ID=1'); sysupdate.ModifySQL:=ug; { TODO 1 -oIch -cSQL : Update vervollständigen } try systemquer.Post; systemquer.Refresh; except Showmessage('Speichern fehlgeschlagen!'); end; finally ug.Free; systemquer.Active:=False; end; K-H |
AW: SQL UPDATE will nicht
Vielen Dank für Eure Antworten!
sysupdate ist eine TZUpdateSQL und bammelt an der systemquer (TZQuery) dran. Das funktioniert normalerweise. Nur das Parameterdingenskirchen verstehe ich nicht. Ich werde die Posts mal durchgehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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 by Thomas Breitkreuz