Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#3

AW: Edit mit DBQuery

  Alt 23. Jul 2018, 15:59
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;
  Mit Zitat antworten Zitat