如何将ClientDataSet.Delta置空?(100分)

  • 主题发起人 主题发起人 wangwpf
  • 开始时间 开始时间
W

wangwpf

Unregistered / Unconfirmed
GUEST, unregistred user!
做了一个COM+的程序,将ClientDataSet.Delta发到服务器更新后,第二次将ClientDataSet.Delta将发往服务器更新的时候,便提示出错说记录未找到,或另一用户修改的记录,再在找到原因中delta中还保存着上将更新过的记录,可是不知道有什么方法能清空delta,并且使data中是更新后的值??
 
重新刷新一下ClientDataSet数据集。。。
 
如果是不提交修改并恢复的话,用CancelUpdates
记错了,如果不提交并不恢复的话,楼下的gfh21cn说得对,用MergeChange
 
ClientDataSet.date = null
 
我是不提交也并不恢复,但执行无效提供者或是无效的delta包,
有一点我的clientDataset中没有设置提供者!
我没有用ClientDataSet.ApplyUpdate(0)方法,我是做的COM+组件,是手工将ClientDataSet.Delta发到服务器上的,用的是COM+上自定义的SetReport方法,如:
客户端:
SetReport(ClientDataSet.Delta,iMaxError,iOutError);
服务端:
DataSetProvider.applyUpdate(Delta,iMaxerror,iouterror);
这样手工更新后ClientDataSet.Delta的值不会改变
 
errordatas是
DataSetProvider.applyUpdate(Delta,iMaxerror,iouterror)返回的错误包。
客户端用clientdataset1.Reconcile(errordatas),如正确
ClientDataSet.Delta置空,否则返回出错信息。
 
var
V:OleVarinat;
begin
try
V:=MyAppServer.SetReport(ClientDataSet.Delta,iMaxError,iOutError);
ClientDataSet1.Reconcile(V);

except
MessageBox(Handle,'更新錯誤!','錯誤',MB_ICONERROR);
end;
 
好象是MergeChange这个函数可以清空
 
多人接受答案了。
 
后退
顶部