如何判断批更新模式下的ADO数据集的数据已经改变,类似于BDE数据集的UpdendPending属性, 而不是判断当前记录是否改变

解决方案 »

  1.   

    看DataSet的RecordSetStatus,RecordStatus,UpdateStatus,State之类的属性,总有一个可用吧。
      

  2.   

    我不知道BDE里面有UpdendPending这东西,它是干什么的?
      

  3.   

    设个标记,在afterdelete和afterpost中修改标记
      

  4.   

    也可直接利用数据集的TAG属性
    afterdelete 和afterpost后修改,提交或撤取提交后还原
    做三层时clientdataset有个changecount很好用的,可ado没有
      

  5.   

    论坛里有一位高手写了一个方法,类似于BDE的UpdendPending功能,不过我没有摘录下来。你可以搜索一下。其实您可以自已写一个的,你就设一个BookMark,然后扫一下表,看每条记录的UpdateStatus的值,如果有更新那么就同UpdendPending为True一样了,那位哥们好象也是这样子写的。
      

  6.   

    给分,感射大家,我已经在Delphi6从入门到精通这本书中找到了答案,继承TADOConnection
    添加一个公共函数
    function TADOConnectionX(ADODataSet: TCustomADODataSet):Boolean
    begin
      with TADODataSet.Create(nil) do
      begin
        try
         Clone(ADODataSet);
         FilterGroup := fgPendingRecords;
         Filter := true;
         Result :=  not (Eof and Bof);
       finally
         Free;
       end;
      end;
    end;