请问如何实现单击dbgrid中的一条记录时,将相应的字段(比如是姓名)赋给edit控件???(dbgrid和adoquery相绑定)

解决方案 »

  1.   

    edit1.Text:=adoquery.FieldByName('姓名').AsString;
      

  2.   

    不行的??
    edit1没有改变过!
      

  3.   

    //修改数据表中的数据
    procedure TForm1.Button4Click(Sender: TObject);
    var
       iid:string;
    begin
       iid:=dm.ADOQuery3.FieldByName('yh_id').Asstring;
       if id_no=application.MessageBox(pchar('真的要修改ID='+iid+'数据吗?'),'确认信息',mb_YesNo) then exit;
       try
          dm.ADOQuery1.Close;
          dm.ADOQuery1.SQL.Clear;
          dm.ADOQuery1.SQL.Add('select * from yh_table where yh_id='''+iid+''' ');
          dm.ADOQuery1.Open;
          dm.ADOQuery1.Edit;                                                                         dm.ADOQuery1.FieldByName('yh_mc').AsString:=edit1.Text;
          dm.ADOQuery1.FieldByName('yh_pwd').AsString:=edit2.Text;
          dm.ADOQuery1.FieldByName('yh_zmc').AsString:=edit3.Text;
          dm.ADOQuery1.Post;
          showmessage('数据修改成功');      dm.ADOQuery3.Close;
          dm.ADOQuery3.SQL.Clear;
          dm.ADOQuery3.SQL.Add('select * from yh_table');
          dm.ADOQuery3.Open;
       except
       showmessage('数据异常')
       end;
    end;
      

  4.   

    看看是否获取adoquery.FieldByName('姓名').AsString成功
      

  5.   

    edit1.Text:=adoquery.FieldByName('姓名').AsString
    就可以..
    不行的话就是你的adoquery中的查询没有查询到'姓名'
      

  6.   

    用dbedit绑定不就可以了,或者在adoquery的afterscroll事件中写
    edit1.Text:=adoquery.FieldByName('姓名').AsString
      

  7.   

    for i := 0 to DBGrid1.SelectedRows.Count - 1 do
    begin
      DBGrid1.DataSource.DataSet.GotoBookMark(Pointer(DBGrid1.SelectRows.Items[i]));
      for j := 0 to DBGrid1.FieldCount - 1 do
      begin
         DBGrid1.Fields[j].asvariant;//这可以得到你选中的所有行的每条记录的值
      end;
    end;