![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
关于delphi中的dbgridg更新记录后不刷新的问题 20
varid:string;beginifapplication.MessageBox('确定要修改吗?','警告',MB_YESNO)=idnothenexit;begi...
var id:string;
begin
if application.MessageBox('确定要修改吗?','警告',MB_YESNO)=idno then exit;
begin
try
with adoquery1 do
begin
id:=ADOQuery1.FieldByName('id').AsString;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('update jsj set id = :id,姓名 =:姓名,年龄=:年龄 where id ='+id);
adoquery1.Parameters.FindParam('id').Value:=edit1.Text;
adoquery1.Parameters.FindParam('姓名').Value:=edit2.Text;
adoquery1.Parameters.FindParam('年龄').Value:=edit3.Text;
ExecSQL;
end;
messagebox(handle,'修改成功','提醒',MB_OK);
except
messagebox(handle,'数据异常','提醒',MB_OK);
end;
end;
end;
可以更新记录,但更新后,不能即时刷新 dbgrid,出现一个空白的dbgrid,后来我用以下代码进行重新打开
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from jsj');
ADOQuery1.Open;
但是我看人家的代码不用像我这样重新打开一下记录集的,没有我上面第二这段代码照样可以,请问是怎么做到的 展开
begin
if application.MessageBox('确定要修改吗?','警告',MB_YESNO)=idno then exit;
begin
try
with adoquery1 do
begin
id:=ADOQuery1.FieldByName('id').AsString;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('update jsj set id = :id,姓名 =:姓名,年龄=:年龄 where id ='+id);
adoquery1.Parameters.FindParam('id').Value:=edit1.Text;
adoquery1.Parameters.FindParam('姓名').Value:=edit2.Text;
adoquery1.Parameters.FindParam('年龄').Value:=edit3.Text;
ExecSQL;
end;
messagebox(handle,'修改成功','提醒',MB_OK);
except
messagebox(handle,'数据异常','提醒',MB_OK);
end;
end;
end;
可以更新记录,但更新后,不能即时刷新 dbgrid,出现一个空白的dbgrid,后来我用以下代码进行重新打开
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from jsj');
ADOQuery1.Open;
但是我看人家的代码不用像我这样重新打开一下记录集的,没有我上面第二这段代码照样可以,请问是怎么做到的 展开
1个回答
展开全部
你的adoquery1执行的是sql语句修改了数据库的数据.
而你的grid关联的数据集数据并没有更新。
你用ADOQuery1去执行更新
在做ADOQuery2区关联grid,执行ADOQuery1后ADOQuery2.Refresh
而你的grid关联的数据集数据并没有更新。
你用ADOQuery1去执行更新
在做ADOQuery2区关联grid,执行ADOQuery1后ADOQuery2.Refresh
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询