Delphi-Quellcode:
DatamodulePlanung.IBQueryAuftrag.Close;
DatamodulePlanung.IBQueryAuftrag.SQL.Clear;
DatamodulePlanung.IBQueryAuftrag.SQL.Add('select * FROM PLANNUNG where ID_AUFTRAG = ' + IntToStr(id_Auftrag));
DatamodulePlanung.IBQueryAuftrag.Open;
DatamodulePlanung.IBQueryAuftrag.Edit;
DatamodulePlanung.IBQueryAuftragSTATUS.AsString := ComboBoxStatus.Text;
DatamodulePlanung.IBQueryAuftragSTATUSDATUM.Value := now;
DatamodulePlanung.IBQueryAuftragSTATUSNAME.AsString := UnitAnmeldung.FormAnmeldung.EditNuname.Text;
DatamodulePlanung.IBQueryAuftrag.Post; // und nicht ExecSQL
Mit ExecSQL führt man SQLs aus, Du möchtest aber einen konkreten Datensatz ändern, den zu öffnen, zu editieren und dann das
SQL zum Öffnen nochmal per ExecSQL ausführen, ist nicht sinnvoll. ExecSQL nutzt man gewöhnlich für Insert, Update, Delete, Create ...
Oder sowas (ungetestet):
Delphi-Quellcode:
DatamodulePlanung.IBQueryAuftrag.SQL.Clear;
DatamodulePlanung.IBQueryAuftrag.SQL.Add('update PLANNUNG set ');
DatamodulePlanung.IBQueryAuftrag.SQL.Add('STATUS = :Status, ');
DatamodulePlanung.IBQueryAuftrag.SQL.Add('STATUSDATUM = :StatusDatum, ');
DatamodulePlanung.IBQueryAuftrag.SQL.Add('STATUSNAME = :StatusName ');
DatamodulePlanung.IBQueryAuftrag.SQL.Add('where ID_AUFTRAG = :ID_Auftrag');
DatamodulePlanung.IBQueryAuftrag.ParamByName('STATUS').AsString := ComboBoxStatus.Text;
DatamodulePlanung.IBQueryAuftrag.ParamByName('STATUSDATUM').Value := now;
DatamodulePlanung.IBQueryAuftrag.ParamByName('STATUSNAME').AsString := UnitAnmeldung.FormAnmeldung.EditNuname.Text;
DatamodulePlanung.IBQueryAuftrag.ParamByName('ID_Auftrag').AsInteger := id_Auftrag;
DatamodulePlanung.IBQueryAuftrag.ExecSQL;