hiflower(花) : 高手!!我是这个意思: 我有4个cds,我也是 这样。 if cds1.ApplyUpdates(0)>0 then cds1.CancelUpdates; if cds2.ApplyUpdates(0)>0 then cds2.CancelUpdates; if cds3.ApplyUpdates(0)>0 then cds3.CancelUpdates; if cds4.ApplyUpdates(0)>0 then cds4.CancelUpdates;但是在执行时可能cds1,cds2都成功了,但CDS3失败,这时我怎样取消CDS1和CDS2呢? 并且也不执行CDS4.谢谢你!!
还是用 ApplyUpdates 好,不要在客户端直接用 SQL
否则就用 C/S。同时有 4 个 cds ApplyUpdates 时,中间层是独立进行处理的。
当中间层发生数据冲突(如被另一个改变),则会提交失败,并通知 cds。
cds 在 OnReconcileError 中可以适当处理,比如可以强迫提交,也可以获得新的数据,也可以放弃。
cds 可以这样提交:
if cds.ApplyUpdates(0)>0 then
cds.CancelUpdates;// 当不需要调各冲突时,可以取消所有的修改
高手!!我是这个意思:
我有4个cds,我也是 这样。
if cds1.ApplyUpdates(0)>0 then
cds1.CancelUpdates;
if cds2.ApplyUpdates(0)>0 then
cds2.CancelUpdates;
if cds3.ApplyUpdates(0)>0 then
cds3.CancelUpdates;
if cds4.ApplyUpdates(0)>0 then
cds4.CancelUpdates;但是在执行时可能cds1,cds2都成功了,但CDS3失败,这时我怎样取消CDS1和CDS2呢?
并且也不执行CDS4.谢谢你!!
我现在就是回传到服务端进行事务处理。但问题就是我上面提到的我怎样来知道有没有其他的途径已经对我的数据修改过?也就是说我怎样来达到cds 的 OnReconcileError这个功能?
办法之一是把每个CDS 的 Delta 通过中间层的接口方法传递到中间层,然后中间层把这些 Delta 在事务中提交到数据库服务器。仅供参考^_^
我现在就是传递到中间层处理的,但是就是没有办法做到cds 的 OnReconcileError这个功能,我没有办法知道有没有其他途径改过这些数据。
否则,应当把每个 cds 的 Delta 同时送到中间层去。办法是在中间层添加一个接口方法,把这几个 Delta 传递过去(我没这样做过,可能有更好的办法)