なぜこれが起こっているのかよくわからないので、状況を簡単に説明します (簡単に理解できるはずです)。
Form1 は、SQL 選択ステートメントを実行し、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 を何回呼び出しても、新しいレコードは表示されません。
何が原因で、どうすれば修正できますか?