关于delphi中的dbgridg更新记录后不刷新的问题

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;
但是我看人家的代码不用像我这样重新打开一下记录集的,没有我上面第二这段代码照样可以,请问是怎么做到的

你的adoquery1执行的是sql语句修改了数据库的数据.

而你的grid关联的数据集数据并没有更新。
你用ADOQuery1去执行更新

在做ADOQuery2区关联grid,执行ADOQuery1后ADOQuery2.Refresh
温馨提示:内容为网友见解,仅供参考
无其他回答

DELPHI ADOQUERY连接ACCESS,查询记录总数问题
FieldByName('日期').AsString := DateTimeToStr(Date());SQL.Add('select * from DIPBCT where 日期=date()这两句的原因 ACCESS 数据库对日期的查找应该加 而且 DateTimeToStr(Date()的格式与 where 日期=date() 的日期格式不同。第一句换成 FieldByName('日期').AsString := formatdatetime(...

delphi dbgrid数据行上下移动,不是光标的移动。例如我要点击下移,光标...
用索引可实现行移动 nit Unit1;interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Grids, DBGridEh, StdCtrls, ComCtrls, ExtCtrls, DB, DBClient,midasLib,MConnect,shellapi;type TForm1 = class(TForm)DBGrid: TDBGridEh;Panel1: TPanel;TreeView...

相似回答