我在客户端添加了一批记录后,如何使用clientdataset一次性更新到服务器呢?

解决方案 »

  1.   

    调用ClientDataSet的ApplyUpdate方法
      

  2.   

    一批记录的提交并不是很好的办法,因为在事务性很强的系统,这个办法就不是很好,如果采用QUERY得到的数据你就没不是很好做,但是也可以采用INSERT和UPDATE进行,一般的就直接采用ClientDataSet的ApplyUpdate方法,建议你不要过多的这样处理
      

  3.   

    要是ApplyUpdate过程中出错怎么办?
      

  4.   

    三层中对主从表的更新操作是这样的:
    在中间层应用服务器端那个向ClientDataSet提供数据的DataSetProvider也负责更新ClientDataSet调用ApplyUpdate方法回传的数据包。主从表查询的DataSet的更新不能由DataSetProvider自动完成,需要在DataSetProvider的BeforeUpdateRecord事件函数中加入自己写的数据更新代码,BeforeUpdateRecord事件有几个参数:
    SourceDS——源数据集,一般不需要用到
    DeltaDS——包含需要更新记录的数据集,这里只有在客户端更新过的记录。
    UpdateKind——更新的类型,比如是修改、插入还是删除。
    Applied——完成后必须设为True,指示DataSetProvider不用再执行更新操作。
    手动更新要分别针对修改、插入还是删除写三个处理过程,在过程里写入你自己更新物理数据库的代码,这里与两层结构的代码是一样的。在BeforeUpdateRecord事件处理函数中根据UpdateKind参数调用这几个过程。
    ApplyUpdate的出错可以在DataSetPrvider的OnUpdaErro或ClientDataSet的ClientDataSet1ReconcileError中处理。