我想根据Delta 属性来手动提交客户端数据集的更改,访问Delta属性,只知道:凡是更新的记录Delta中存在旧记录和相应的修改过的字段(其它没有修改的字段为空)两条记录;而删除和新增的记录只存在删除的和新增的记录.如果经过多次操作后,一次提交,如何区别这些操作呢?

解决方案 »

  1.   

    不知道,帮你顶把。
    对了,你可以把delta赋给另一个clientdataset的data,这样可能研究起来方便些。
      

  2.   

    谢谢sousoft,我是这样跟踪的,并在DBGrid中显示出来了.
    看来还是得花时间去记录每一次的操作了!
    不知其他大虾们还有什么办法?
      

  3.   

    在 ClientDataSet 连接的 DataSetProvider.OnBeforeUpdateDate(...; UpdateKind ...)此参数指出当前操作的记录是哪种类型的, ukInsert, ukModify, ukDelete
      

  4.   

    TClientDataSet里面的.State有好几种属性,其中有dsInsert, dsEdit等等
      

  5.   

      ClientDataSet2.Data:=ClientDataSet1.Delta;
      ClientDAtaSet2.First;
      while not ClientDataSet2.Eof do
      begin
         if ClientDataSet2.UpdateStatus=usUnModified then
            Memo1.Lines.Add('UnModified')
         else
         if ClientDataSet2.UpdateStatus=usModified then
            Memo1.Lines.Add('Modified')
         else
         if ClientDataSet2.UpdateStatus=usInserted then
            Memo1.Lines.Add('Insert')
         else
         if ClientDataSet2.UpdateStatus=usDeleted then
            Memo1.Lines.Add('Delete');
         ClientDataSet2.Next;
      end;