dbgrid等数据感知控件总是自动把修改的数据更新,怎样做才能获得正确的信息,控制adoquery提交或是不提交,即还原到原来的状态呢?有两种操作,append,modify,我试着在beforePost事件里写,可是在append后,如果不想保存,怎么把append的那一行去掉呢?希望给个详细点的答案?用别的控件也行!

解决方案 »

  1.   

    BeforePost 里面外理
     if .... then
     dataset.cancel    //取消append添加的当前行
     else .....
      

  2.   

    helodd(~改来改去~) 的方法不行,当用adoquery1.cancel时并不能把append的那一行取消;
      

  3.   

    BeforePost 里面处理
     if .... then
     begin
       dataset.delete;
       abort;
     end
     else .....
      

  4.   

    楼上的abort没有用吧
    当modify后,如果不想保存,怎么处理?用
    ADOQuery1.CancelBatch(arAll);和
    ADOQuery1.CancelUpdates;
    都不行!
    或者是怎么能让adoquery不自动提交数据,而用命令控制它提交,这些要用dbedit的感知控件,
    用这些控件的时候总是自动更新数据,用什么命令能在beforePost事件里让adoquery放弃更新数据库呢?
      

  5.   

    procedure TForm1.ADOTable1BeforePost(DataSet: TDataSet);
    begin
    if application.MessageBox('是否保存?','Information',mb_okcancel+mb_iconquestion)<>mrok then
      begin
      adotable1.cancel;
      abort;
      end;
    end;
      

  6.   

    楼上的方法不行,因为要用,多个dbedit等感知控件来修改数据,只能在scroll,close,post等事件进行询问的
      

  7.   

    用批处理来做。
    保存时提示,再UpdateBatch或CancelBatch;