客户端数据库通过ClientDataSet向数据库服务器更新一条记录后,如何再通过DataSetProvider向客户端数据库中此条记录中的空字段返回一个值,表示数据库服务器已接收了此条记录的更新?????

解决方案 »

  1.   

    不太理解你的意思,ApplyUpdates返回失败的数目,你看这个有没有用
      

  2.   

    ApplyUpdates(0);执行正常后就没有错误!
      

  3.   

    服务器端
    TRemoteDataModule1.datasetprovider1getdata(Sender:Tobject;DataSet:TCustomClintDataSet);
    begin
      tag:='成功了!';
    end;
    TRemoteDataModule1.datasetprovider1aftergetrecords(Sender:Tobject;var ownerdata:olevariant);
    begin
      with sender as Tdatasetprovider do
        ownerdata:=tag;
    end;
    客户端
    Tdatamodule1.clientdataset1aftergetrecords(sender:Tobject;var ownerdata:olevariant);
    begin
      with sender as Tclientdataset do
      tag:=ownerdata;
    end;
      

  4.   

    你要确保记录真的更新到了服务器数据库中 ApplyUpdates(0)就可以了, 如果有错, 可以处理DatasetProvider的OnUpdateError事件
      

  5.   

    ClientDataSet是将客户端所有修改过的记录打包成一个数据包,即Delta,一次性发送到服务端,更新的过程中如果出错的话,如果调用时是ApplyUpdates(0)则会将操作包装在一个数据库事务中,出错的话则全部更新都不会成功。
      

  6.   

    clientDataSet可以将一条数据作为数据包,也可以将多条数据作为数据包。为了保证每条数据都更新到服务器上,我是把每条数据作为一个数据包向服务器提出更新,即使出错了,也可以知道是哪条数据没有更新成功。
    如果是多条数据作为一个数据包提出更新,更新失败的话,你并不知道是哪条数据出错,所有数据都得重新更新了。