三层数据更新问题!!急!(先出100分)解决问题另给300分!多谢各位 (100分)

  • 主题发起人 主题发起人 hgood
  • 开始时间 开始时间
H

hgood

Unregistered / Unconfirmed
GUEST, unregistred user!
我在客户端用ClientDataSet1.ApplyUpdates(-1)更新数据后,用SqlServer2000的事件
探测器可看到系统确实作了更新,代码如下:
exec sp_executesql N'update initstock set
Qty = @P1,
Price = @P2
where
DepotID = @P3 and
BerthNo = @P4 and
GoodsID = @P5 and
Unit = @P6 and
ProvNo = @P7 and
BatchNo = @P8
', N'@P1 numeric(12,3),@P2 float,@P3 int,@P4 varchar(8),@P5 varchar(16),@P6 varchar(8),@P7 varchar(8),@P8 varchar(12)', 2.000, 2.000000000000000e+000, 2, '003', '10003', '盒', '003', '31'
但是在客户端再次打开时,还是原来的数据!用ClientDataSet1.ApplyUpdates(0)是可以
修改相应的数据!我想上面的原因可能我的中间层不知哪个选项没有设好而让系统再次
回滚,所以没有修改,而我用ClientDataSet1.ApplyUpdates(-1)的原因是因为我想在多个
用户同时修改一条记录时(表用多个字段作主关键字,有可能修改的某一字段是作为主关键
字段的)用到Reconcile Error Dialog功能,以前的贴上都说用ClientDataSet1.ApplyUpdates(-1)更新法才可以!不知道大家有什么好想法(中间层用Com+,服务器为Windows Server 2000)!
谢谢大家
另:UpdateMode=upWhereKeyonly

 
DataSetProvider的UpdateMode=upWhereChanged
 
同意楼上
 
还是不行啊!如果我把Com+事务改成不支持事务就可以提交,反之却不行!不知为什么
还望大家帮我想想!
其实我只想实现 Reconcile Error Dialog 功能!如果能实现这个也行!李维的书也看过
了,还是实现不了!主要是实现不了raSkip这个功能!当我提交数据时,我想跳过有冲突的
数据,其他的继续提交!帮帮我!
 
怎么没人回答啊!高手去哪里了?:)
 
探查一下有没有回滚动作。
我是不用com+的事务功能,觉得它很麻烦。还是直接用sql来控制事务保险。
 
将当前的COM+设置为支持事务,不要需要事务,或支持新事务。
原因,基本上能肯定是你COM+保存的时候有问题?你可以在DataSetProviders的错误事件中写上代码,看是否是什么原因,或者跟踪COM+,探查器在这种情况下是检查不出来的!
而且你暂时还不要用到这样的语句,SETCOMplete,SETABORT,不要用到,在中间层暂时用这一些,TRY,EXCEPT 之类的,错误肯定会出现的!
 
我把ClientDataSet1.ApplyUpdates(-1)改成
ClientDataSet1.ApplyUpdates(10000)却可以了!不是为什么!是不是Midas的Bug?
我这样做好像问题是解决了!可是这好像不是最终解决的办法!还请大家为我分析一下
原因!!谢谢大家
 
如果COM+是支持事务,你当然后要用COM+来提交呀,不然会默认回滚的。
 
学习,帮你提前!
 
你如果用了ClientDataSet1.ApplyUpdates(-1)或ClientDataSet1.ApplyUpdates(0)
且中间件是支持事务提交有问题当然就回滚的,看看用需要事务
 
用COM+提交?怎么个提交法?
 
To:sgzc
事实上我就是不知道要把SetComplete加在哪个事件里!哈哈AfterApplyUpdates里?
 
可以呀,不过出错就要SetAbort,这可以是你更新不成功的原因。
 
这样做还是不行!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
940
SUNSTONE的Delphi笔记
S
I
回复
0
查看
814
import
I
后退
顶部