你能不能确定,这个Data的赋值,是否将ClientDataset的变化数据Delta一起传递过去?

解决方案 »

  1.   

    没有。delta的值是查询出来的数据集变化后形成的集。
    我这里不存在修改数据。只是2个数据库中2各表数据的同步问题。
    也就是说我用SourceData的data去替换DestData的data.
    这2个DATA不一致。 但我查过。DestData.Data=SourceData.Data;后
    DestData中的delta好像还是空值。因此也不能提交。但现在这个内存中的DATA确实和他赋值前的DATA不一样了。为什么不能修改道数据库呢。
    是不是有什么属性要设置?
      

  2.   

    其实不应该是data,而是delta
    DestData.Delta=SourceData.Data;
    DestData.ApplyUpdates(-1);
    Applyupdates更新的是修改过的数据delta,而不是原有的data,试试吧
      

  3.   

    那么我觉得你还要在赋一个值
    DestData.Delta := SourceData.Delta。
    因为ApplyUpdates提交的是Delta,而不是其他。
      

  4.   

    SourceData.delta是空值。因为比较自己而言,它没有进行过任何修改和删除,或添加。只是针对DestData.data而言。它存在修改的,添加的和删除的数据。Clientdataset的delta是针对自己数据的前一次提交后到现在地所有编辑而言。但我这里不存在新的编辑。数据的维护是由另外的软件完成的。
    我这里实现的是2个库中的数据同步。有点象数据备份。
      

  5.   


    geliang说的有一定道理。但忘记了一点。delta属性是不能赋值得。它是只读地
      

  6.   

    对chechy(chechy),是应该这样,我太粗心了:) 
    sunling(孙凌),你结合chechy和我说的应该就可以了 
      

  7.   

    Delphi还没有你想象的那么聪明。因为再ClientDataset(cds)上,Delphi将任何修改、删除、新增的数据都放到Delta中,然后提交的时候,根据Delta进行相应的操作。没有Delta,那么Delphi是不行的了。那么你就需要通过其它的机构来保证数据同步。
      

  8.   

    Delta既然不能赋值,那么你还是可以看看Delta的结构的,
    DestData.Data := SourceData.Delta
      

  9.   

    咱们能不能改造它的DATA赋值操作。
    在对CLIENTDATA的DATA赋值时。比较前后的DATA的差别。自动修改DELTA数据集。
    就好像一下子完成了许多添加,删除,和修改操作一样。这样就可以提交修改了。
    象不通为什么BORLAND公司为什么没做。当然。赋值前后2个DATA地结构不一样就不行了。:)
      

  10.   

    作为一个通用的程序,要考虑许多问题,所以Borland不能这样做,这样做的代价简直是惊人的。
    针对一个特定的情况,你可以这样做,这样的工作也是烦琐的,但是,还好,不会把你吓死。