我不确定为什么会发生这种情况,所以我将简要解释一下情况(应该很容易理解):
Form1 一个执行 sql select 语句并将其显示在通过 TDataSource 组件链接到 ADOQuery1 组件的 dbgrid 上的过程:
procedure form1. Selectp;
begin
ADOQuery1.Active:=false;
ADOQuery1.SQL.Text:='select * from tbl';
ADOQuery1.Active:=true;
end;
Form1 有一个按钮,可以打开一个新表单以输入记录字段:
procedure form1. buttonaddrecordClick(Sender: TObject);
var
form2:Tform;
begin
form2:=Tform2.Create(nil);
try
form2.ShowModal;
finally
form2.Release;
end;
selectp;//executes but new record doesn’t show up although in database;
end;
Form2 有一个通过 form2.ADOQuery2 将值插入数据库的过程。
procedure form2.Insertp;
begin
ADOQuery2.Active:=false;
ADOQuery2.SQL.Text:='insert into tbl (field1) values ('''+ sfield +''')';
ADOQuery2.ExecSql;
ModalResult := mrOk;
end;
如果我在 form1 上放置一个按钮来运行 selectp,我必须在新记录出现之前按下它 2 次以上,但不管我在 buttonaddrecord 中的 showmodal 之后调用 selectp 多少次,新记录都不会出现。
是什么原因造成的,如何纠正?