注册 登录
编程论坛 Delphi论坛

新手求助,谢谢!(关于ADOquery1.SQL.Text:='Update)修改数据的问题!

tanytany 发布于 2020-02-12 06:47, 2405 次点击
我做了个更新数据的窗体,用的是ACCESS数据库,控件是DBGridEh,问题是,点修改时,数据会更新,但是会将表内有的所有数据修改,也就是表内有多少行就是将全部的于修改成为一样的内容,麻烦高手帮看看,谢谢!(年纪有点大,万望有高手能耐心指导下,谢谢!
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
)代码如下:
//点击DBGridEh表,将值显示在edit栏:
procedure TForm3.DBGridEh1DblClick(Sender: TObject);

begin
datetimepicker1.DateTime:=dbgrideh1.DataSource.DataSet.FieldValues[dbgrideh1.Columns[1].FieldName];
edit1.text:=dbgrideh1.DataSource.DataSet.FieldValues[dbgrideh1.Columns[2].FieldName];
edit2.text:=dbgrideh1.DataSource.DataSet.FieldValues[dbgrideh1.Columns[3].FieldName];
combobox1.Text:= dbgrideh1.DataSource.DataSet.FieldValues[dbgrideh1.Columns[4].FieldName];
BitBtn3.Enabled:=True;
end;

//修改更新

procedure TForm3.BitBtn3Click(Sender: TObject);
begin
   With ADOQuery1 do
   begin
   ADOquery1.Close;
   ADOquery1.SQL.Clear;
   ADOquery1.SQL.Text:='Update jhlb SET [date]=:date,完成状态=:完成状态,是否完成=:是否完成,计划内容=:计划内容 where id';
   ADOquery1.Parameters.ParamByName('date').Value:=datetostr(DateTimePicker1.Date);
   ADOquery1.Parameters.ParamByName('是否完成').Value:=combobox1.Text;
   ADOquery1.Parameters.ParamByName('计划内容').Value:=edit1.Text;
   ADOquery1.Parameters.ParamByName('完成状态').Value:=edit2.Text;
   ADOQuery1.ExecSQL;
   ADOquery1.Close;
   ADOquery1.SQL.Clear;
   ADOquery1.SQL.Add('Select  ID as ID,date as 日期,计划内容 as 工作计划,完成状态 as 完成状态,是否完成 as 完成情况 From jhlb where id');
   ADOquery1.Open;
  end;
  BitBtn3.Enabled:=false;
end;
3 回复
#2
tanytany2020-02-12 13:25
鱼C的大哥们,delphi你们放弃了么~~~~
#3
guth2020-06-02 17:26
ADOquery1.SQL.Text:='Update jhlb SET [date]=:date,完成状态=:完成状态,是否完成=:是否完成,计划内容=:计划内容 where id';

最后的where要附加条件的,比如 where id='XXX';仅仅是 where ID 肯定是不行的。
#4
supermay2021-10-20 09:37
ADO中有ltBatchOptimistic状态(即缓存状态),自己控制数据的提交
1