如题:
说明:在DBgrid中选中一个记录然后另开一个FORM,进行编辑,Nameid 是全局变量; Nameid:= ADOQuery1.FieldByName('id').AsString; // Nameid 是全局变量;
Form3.show;
...........................另开一个FORM3
procedure TForm3.FormActivate(Sender: TObject); with ADOQuery2 do
.....
SQL.Add('select id,person,adress....,from cdtype');
SQL.Add('where id = '+Nameid);
......关键是我不想重新查询,全局变量能否不用?
请问各位有什么更好的办法,有没有可能用记录定位的方法,或用指针?请各位高手不吝赐教,50分
说明:在DBgrid中选中一个记录然后另开一个FORM,进行编辑,Nameid 是全局变量; Nameid:= ADOQuery1.FieldByName('id').AsString; // Nameid 是全局变量;
Form3.show;
...........................另开一个FORM3
procedure TForm3.FormActivate(Sender: TObject); with ADOQuery2 do
.....
SQL.Add('select id,person,adress....,from cdtype');
SQL.Add('where id = '+Nameid);
......关键是我不想重新查询,全局变量能否不用?
请问各位有什么更好的办法,有没有可能用记录定位的方法,或用指针?请各位高手不吝赐教,50分
把查询放到这后面
然后在form3里直接访问adoquery
在DBgrid用光标选中一个记录
此时 Nameid:= ADOQuery1.FieldByName('id').AsString;就是当前的纪录了
然后新开一个子窗口对选中的记录进行编辑,谢谢。
SQL.Add('where id = '+窗体.ADOQuery1.FieldByName('id').AsString;);
Form1是DBGrid所在的窗体,上面放一个DataSet和DataSource,设置好关联关系,然后use另外一个Form2。
Form2上放一堆DBEdit、DBMemo等等,同样use前一个窗体Form1,然后把Form2上的那些DBEdit、DBMemo之类的组件的DataSource属性指定为Form1上的DataSource。完全可以完成你的要求!