如题:
  说明:在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分

解决方案 »

  1.   

    没完全看懂.Nameid:= ADOQuery1.FieldByName('id').AsString;  // Nameid 是全局变量;
    把查询放到这后面
    然后在form3里直接访问adoquery
      

  2.   

    Thank you,
    在DBgrid用光标选中一个记录
    此时 Nameid:= ADOQuery1.FieldByName('id').AsString;就是当前的纪录了
    然后新开一个子窗口对选中的记录进行编辑,谢谢。
      

  3.   

     SQL.Add('select id,person,adress....,from cdtype'); 
      SQL.Add('where id = '+窗体.ADOQuery1.FieldByName('id').AsString;); 
      

  4.   

    简单举例:
      Form1是DBGrid所在的窗体,上面放一个DataSet和DataSource,设置好关联关系,然后use另外一个Form2。
      Form2上放一堆DBEdit、DBMemo等等,同样use前一个窗体Form1,然后把Form2上的那些DBEdit、DBMemo之类的组件的DataSource属性指定为Form1上的DataSource。完全可以完成你的要求!
      

  5.   

    直接调用那个界面的ADOQUERY控件就可以了
      

  6.   

    对啊,你直接调用前一个form的ADOQUERY不就可以了吗?