if   ADOTable1.State   in   [dsEdit,   dsInsert]   then
if   MessageBox(Handle,   '记录已改变,是否保存? ',   '是否保存数据 ',   MB_OKCANCEL+MB_ICONQUESTION)   =   ID_OK   then
   // BtnSave.Click
else
    ADOTable1.Cancel;上面这句加在哪里比较好?DBedit比较多的话  每个changge判断比较麻烦
想加在ADOTable1的事件 只要记录修改了 就提示是否保存

解决方案 »

  1.   

    用CLIENTDATASET吧, 怎样改都行, 最后才执行提交.
      

  2.   

    数据量不大的情况下,就用一般的Edit显示吧,Edit只显示。
    需要改什么,用SQL直接提交。然后刷新界面。
    这样编码的时候会简单很多。
      

  3.   


    用Edit  还得加个旧数据 新数据 判断是否修改
      

  4.   

    在DBGrid的OncolEnter事件中记录修改前的值,在OncolExit事件中比较修改前后的值,如果不一致,就弹你那个对话框
      

  5.   

    用这两个事件就可以了:beforepost beforeCancel
    在DBGrid中的操作,最终会影响数据集,所以只要管理好数据集就可以了。
      

  6.   


    点保存按钮 也会提示是否保存,怎么去掉呢?只在切换到其他记录的时候提示
    procedure TForm1.Button_SaveClick(Sender: TObject);
    begin
    ADOTable1.UpdateBatch();
    end;
      

  7.   


    在这边写,点提交按钮时, 会一直 提示 '记录已改变,是否保存? '
    按了无数次 也是这个提示我有设置ltBatchOptimistic,要提交才保存