如题。
怎么实现?
begin
  Application.CreateForm(TForm3, Form3);  with query do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from Employees');
    Open;
    Edit;
    Form3.Edit1.Text := FieldByName('ID').AsString;
    Form3.Edit2.Text := FieldByName('Name').AsString;
    Form3.ComboBox1.Text := FieldByName('Sex').AsString;
    Form3.ComboBox2.Text := FieldByName('Nation').AsString;
    Form3.Edit3.Text := FieldByName('IDCard').AsString;
    Form3.Edit4.Text := FieldByName('Address').AsString;
    Form3.Memo1.Text := FieldByName('Re').AsString;
  end;
  Form3.Show;
end;
部分代码。
看到没有,我不管点击哪一行,只显示第一行。求助。
谢了,新手没什么分,能帮的就帮下嘛!

解决方案 »

  1.   

     with query do
      begin
      Close;
      SQL.Clear;
      SQL.Add('select * from Employees');
      Open;你这样打开了,当然是第一条了,你应该是两个窗口中用同一个数据源就好了
      

  2.   

    http://topic.csdn.net/t/20050509/18/3992963.html
      

  3.   


    不知道是的代码是没发完整还是?
    没有Select语句,怎么把数据库的值给Edit他们啊?
      

  4.   

     加上:  
     Close;
      SQL.Clear;
      SQL.Add('select * from Employees');
      Open;
      

  5.   


    最好在数据库里面建一个ord的自动编号的列   db隐藏这个列   之后你的添加删除就可以直接带ord来进行唯一的标识
      

  6.   

    DBGrid->DataSource->ADOQuery,这三个东西关联起来。ADOQuery在查询的时候Open后就不要关闭,这样你双击DBGrid,或者在DBGrid中移动某条记录的时候,ADOQuery的游标也会跟着移动。你在双 击的时候直接取ADOQuery.FiledByName('F_Filed').AsString即可。如下代码做参考:
      Form3.Edit1.Text := FieldByName('ID').AsString;
      Form3.Edit2.Text := FieldByName('Name').AsString;
      Form3.ComboBox1.Text := FieldByName('Sex').AsString;
      Form3.ComboBox2.Text := FieldByName('Nation').AsString;
      Form3.Edit3.Text := FieldByName('IDCard').AsString;
      Form3.Edit4.Text := FieldByName('Address').AsString;
      Form3.Memo1.Text := FieldByName('Re').AsString;
      Form3.ShowModle;
      if Form3.IsChange then
      begin
        ADOQuery.Edit;
        ADOQuery.FieldByName('F_Filed').value := Form3.Edit2.text;
        ...
        ADOQuery.Post;
      end;  这是最基本的用法,还有许多方法可以实现。你的代码错误就在于重新查询了数据集。这样始终是第一条。
      

  7.   

     with query do
      begin
      Close;
      SQL.Clear;
      SQL.Add('select * from Employees');
      Open;
      Edit;
      Form3.Edit1.Text := FieldByName('ID').AsString;
      Form3.Edit2.Text := FieldByName('Name').AsString;
      Form3.ComboBox1.Text := FieldByName('Sex').AsString;
      Form3.ComboBox2.Text := FieldByName('Nation').AsString;
      Form3.Edit3.Text := FieldByName('IDCard').AsString;
      Form3.Edit4.Text := FieldByName('Address').AsString;
      Form3.Memo1.Text := FieldByName('Re').AsString;
      end;
      Form3.Show;
    end;
    下面所有的语句全在with query do内部了,query是数据集的名称,这样相当于query.Form3.Edit1.Text,下面的语句应该挪出去。
      Form3.Edit1.Text := FieldByName('ID').AsString;
      Form3.Edit2.Text := FieldByName('Name').AsString;
      Form3.ComboBox1.Text := FieldByName('Sex').AsString;
      Form3.ComboBox2.Text := FieldByName('Nation').AsString;
      Form3.Edit3.Text := FieldByName('IDCard').AsString;
      Form3.Edit4.Text := FieldByName('Address').AsString;
      Form3.Memo1.Text := FieldByName('Re').AsString;
      

  8.   

    我正要做到这个程序呢~~请问那个是真的解决办法呢?双击DBGrid的第二行后弹出的新窗口能看到第二行的数据,但修改数据后就变成第一行的数据了~~怎么解决呢~~