双击DBGRID的记录时)让它弹出一个新的窗体,这个窗体就是记录了该记录的数据(用DBEedit把记录给显示出来),然后我在这个上面修改这个记录,我现在修改好的记录更新不到数据库里,具体的是这样的,有DBGRID的窗体叫chuaxunform,双击DBGRID弹出的新窗体叫bianjiform,我在bianjiform上的“保存按钮”的代码是:
chuaxunform.ADODataSet1.Post;(我在bianjiform窗体添加的DataSource1的DATASET连接到chuaxunform的ADODataSet1,这两个窗体的ADOConnection1都放在一个数据模块里)
说明:不管我的DBGRID的ReadOnly:=False还是ReadOnly:=True;都没有办法更新数据库?
急!在线等,马上给分

解决方案 »

  1.   

    你重新打开chaxunform的adodataset1
      

  2.   

    应该是可以的吧!
    可能是你我chuaxunform没有刷新吧
    adodataSetq.close;
    adodatasetq.open;
    试一下吧
      

  3.   

    chuaxunform.ADODataSet1.close;
    chuaxunform.ADODataSet1.open;
      

  4.   

    是保存不上呢还是保存出错呢?跟DBGrid 没有关系。
    如果ADODataSet1的LockType设置为ltBatchOptimistic时,Post并没有提交到数据库
    必须Adodataset1.UpdateBatch才可以。
    可以贴出你的代码。
      

  5.   

    chuaxunform上的ADODataSet1的LockType为ltOptimistic,所以用Update好象也不行
      

  6.   

    我已经试验过了呀,很正常,弹出窗口的程序如下:
    procedure TForm2.FormCreate(Sender: TObject);
    begin
         datasource1.DataSet:=form1.adoquery1;
    end;procedure TForm2.Button1Click(Sender: TObject);
    begin
         datasource1.DataSet.Post;
    end;
      

  7.   

    procedure Tbianjikehuziliaofm.BitBtn1Click(Sender: TObject);
    begin
      chaxunkehufm.ADODataSet1.Close;
      chaxunkehufm.ADODataSet1.Open;
      chaxunkehufm.ADODataSet1.Post;
    end;
    运行时出错提示:““project xftz.exe raised exception class EAcessViolation with message'Acess violation at address 004B2FB9 in modul'xftz.ex'.read of address 00000310'.process stopped. use step or Run to continue”
      

  8.   

    为什么要chaxunkehufm.ADODataSet1.Close;你把数据给关了还怎么修改
    然后你在chaxunkehufm.ADODataSet1.Open;  chaxunkehufm.ADODataSet1.Post;
    打开后数据没有修改怎么Post?
    procedure Tbianjikehuziliaofm.BitBtn1Click(Sender: TObject);
    begin
      with chaxunkehufm.ADODataSet1 do
      begin
        if Active then 
        if State in [dsEdit,dsInsert] then Post;
      end;
    end;
      

  9.   

    从问的问题就能看出是个初学者,有写朋友很耐心,我用 “palu()” 的方法已解决了问题!
    100分全给了, “rockswj”讲的很好,下次开贴时我会在题目里注明让你来拿分,还希望多多帮助