请高手帮忙:在com组件中通过applyupdate多用户同时更新数据(100分)

  • 主题发起人 主题发起人 me_jhj
  • 开始时间 开始时间
M

me_jhj

Unregistered / Unconfirmed
GUEST, unregistred user!
1、多用户同时更新不同的纪录,大部分是通过数据包插入不同纪录,如果一个用户更新,不会出错,两人以上同时操作就会有用户不能更新。
2、更新数据库的记录包以多少纪录为最佳。
 
谢谢zsjerry ,请关注第一题
 
你用的是什么数据库,我们公司出现过这种情况!
不能删除,不能修改!
后来把SQL语句,的表名,字段名的大小写与数据库对应就行了。你试试!
 
>>1、多用户同时更新不同的纪录,大部分是通过数据包插入不同纪录,如果一个用户更
>>新,不会出错,两人以上同时操作就会有用户不能更新。
是不是多用戶同時更新一個表?
 
遇到过,记不清如何解决了,好像是把服务器的table/query的CachedUpdates设为True
 
对,是多用户同时更新一个表,但是记录肯定不相同,是通过条件用clientdataset数据包取出一定的数据,然后同时更新,就会出错,请帮忙
 
服务器段用的是adoquery
 
Midas本身提供了错误调和机制
delphix/Demo/Midas/Brfcase/...有例子,
注意他的Clientdataset的OnReconcileError事件的代码
 
对不起,我没有说明白,我是说在可以忍受的时间内不想让他回滚,让他能重复提交,自动成功。
 
希望能按照一定机制,比如先到先提交,重复提交,自动成功。希望各位大虾帮忙了!
 
>>比如先到先提交,重复提交,自动成功
可以讓中間層返回錯誤
然后用戶端重試提交.
 
再次感谢zsjerry,但是我的程序比较特殊,客户端是由上级单位选择10-80个单位(不等)提交,属于循环调用服务器方法,所以如果让用户重新提交不太好,(所以更容易出现提交失败)
 
拜托,到底是多少纪录为最佳呢,我用1000条试了,速度还是很慢,请各位帮忙呀,再有,
怎样让并发用户在大多数情况都能提交成功呢
 
并发成功应不存在问题,同时修改同一记录就报错,调用Clientdataset的OnReconcileError事件。
 
我的情况是不可能修改同一条记录,是向同一张表中同时插入不同的记录,并发执行时出错,单一用户更新就不出错。请帮忙分析一下。
我使用midas组件作为中间服务器,客户端通过循环(达到几十次)将
clientdataset数据包分批传送给应用服务器,调用服务器方法通过数据包更新数据。
 
真伤心,第一次在大富翁上请教问题就没有得到满意答案,唉!在等一天,在没有人回答就只好结贴了。。。[:(][:(][:(]
 
我觉得问题大概是这样的:
服务端通过ADOQUERY取数据,以Midas方式传给客户端,因为这个数据集是可编辑的
所以肯定包含了主键
这个数据集是多用户修改的,所以可能会出现客户提交的记录主键重复的情况
 
1.楼主没有说清楚啊,更新出错是出什么错???
如果是新增,那可能有的问题就是主键重复,解决方法就是用自增主键或用主键表,每新增时取主键表(也可以是一个区间,象一本发票一样),当然也可以是当前表中最大主键加1,出错时,客户端判断是不是主键重复,如果是,把主键再取一次...如果失败,再取...取50次;
如果是修改或删除那就是可能"Record changed by another user",这个就不用多处理了.
2.更新记录,
主表:最好是一条一条更新. 
从表随主表了...最好不要超过1000条.当然,还要和你的字段相结合.
 
后退
顶部