在选中一条DBGRID的记录时(双击)让它弹出一个新的窗体,这个窗体就是记录了该记录的数据(用EDIT把记录给显示出来),然后我们在这个上面修改这个记录,
这样我修改记录可以方便点,但我在双击DBGRID时SHOW出一个窗体的时候,上面的EDIT显示不出DBGRID上的记录,我的代码如下:望高人指点!
procedure Tbianjikehuziliaofm.FormCreate(Sender: TObject); 
//“bianjikehuziliaofm”为双击后SHOW出的窗体
begin
    ADODataSet1.Open;
    chaxunkehufm.DBGrid1.ReadOnly:=False;  //“chaxunkehufm”为
                                             有DBGrid的窗体
    Edit1.Text:=ADODataSet1.FieldByName('kh_khdz').Value;
    Edit2.Text:=……      
    ………………
end然后问一下编辑好的记录怎么更新到数据库里,我新窗体上的ADODataSet1的LockType属性为ltOptimistic

解决方案 »

  1.   

    ADODataSet1不要open了,因为你用ADODataSet1.Open无法与dbgrid的数据源的当前行统一,所以直接用bgrid窗体上的数据源就可以了,修改完纪录后,直接将数据赋值到相应的字段就可以了
      

  2.   

    为啥要在显示的窗体的FormCreate事件里写呢?
    你可以在DBGrid所在的窗体的双击事件中一起写出来
    保存时通过传入的参数保存
      

  3.   

    你不要open,你需要dataset1.active:=true;
      

  4.   

    procedure Tbianjikehuziliaofm.FormCreate(Sender: TObject); 
    begin
    //    ADODataSet1.Open;
    //    chaxunkehufm.DBGrid1.ReadOnly:=False;  //“chaxunkehufm”为
    //                                             有DBGrid的窗体
        Edit1.Text:= TADODataSet(DBGrid1.DataSource.DataSet).FieldByName   ('kh_khdz').Asstring;    Edit2.Text:=……      
        ………………
    end
      

  5.   

    你何必要这样, 为什么不使用 DBEdit,连上DataSource 直接编辑就可以了,用Edit太痛苦了吧。^_^
      

  6.   

    直接用bgrid窗体上的数据源就可以了