三层结构客户端调用ApplyUpdate(-1)有问题(50分)

G

gxdx

Unregistered / Unconfirmed
GUEST, unregistred user!
一个表里的记录竟然存在不公平待遇,一张表里有些记录ApplyUpdate(-1)有效,后台数据库的确
更新了,而另一些记录无论怎么ApplyUpdate(-1),后台数据库都是没动静。
我的这张表除了一个自动编号的字段外,其余的都是可空字段,而数据输入时应该都是合法的。
请问这是怎么一回事呢?
 
你用什么数据库?可能和这个自动编号的字段有关,
我用interbase也发生过类似问题
 
这没什么奇怪的。要看对这些记录进行了什么操作,更新失败的原因是什么。
举个简单的例子:假如你对两批记录都执行delete操作,在后台更新时,在第一批记录中很快地找到了你要找的记录(唯一),于是ApplyUpdate(-1)便成功了。而在第二批记录中,在后台更新时,查找到的记录可能不是唯一的(例如,表没主键时就可能出现这种情况),ApplyUpdate(-1)就更新失败了。
最好是用错误窗口看一下,很容易捕捉到更新失败的错误。具体怎么做,介绍三层系统的书
上一般都有。
 
同意HHSH,的说法,你提交之后,不是数据库没有动静,我想应该是主键冲突等情况引起更新失败!你要跟踪一下你后台的代码,先查明是什么原因导致提交失败,再处理吧!
 
请问HandelReconcileError()是哪个unit里的呢?
 
uses uniterror 就OK了!
 
看这个函数的返回值,非零就是有错误
 
可我想知道错误的信息。
UnitError不行啊,找不到该单元
 
啊,我知道怎么得到错误信息了。
showMessage(e.Message)
返回的错误信息是:
Record not found or changed by another user
但明明存在而且只有我一个人在弄的也。怎么回事啊?
 
象ApplyUpdate這樣的函數玩玩還可以, 千萬不要用在產品中. 還是自已寫吧.
 
不会吧?会死人的也。时日无多啦。要交货了。惨。
 
ApplyUpdate很正常啊,我都用这个,没有发现特别的问题,
 
n年以前添加的数据都可以Update,现在insert可以,后台有新数据,但insert进去的数据就
再也不可能Update了。就是新添加的数据不可以update,老是说:Record not found or changed
by another user。
大侠们救命啊。不然迟点你们只能在新闻头条上看到我了。
 
服务端是什么,adoquery?要设置一下
 
是啊,是adoquery啊。要怎么设置啊?
 
你的服务端是什么连接的?若是BDE,请用BDE的SQL moniter 监测一下返回回台的语句,就能找出不能更新的原因了。
 
运行期设置afterOPEN属性
var
i: Integer;
begin
for i := 0 to Dataset.FieldCount - 1do
if Dataset.Fields.CanModify then
dataset.Fields.ProviderFlags := [pfInUpdate];
 
gxdx
报 Record not found or changed
by another user。
错的原因应该是:没有找到要查找的键值
CLIENTDATASET更新数据的原理是去查找每个字段的OLDVALUE
我想你可以在INSERT后,此时插入的值是NEWVALUE
再做一次OPEN,数据集会把你刚INSERT的记录当成OLDVALUE
骗骗它又何妨!!,至于效率的问题你可以另外想办法嘛!!!!!
 
搞掂。
我要拥抱menxin,亲完再亲,你真是我的再生父母。
在此也要谢谢各位大侠的关心与支持,
bitd
Dephic
hcm0790
HHSH
jerryzhu
LiChaoHui
menxin
谢谢!!
可惜我也差不多成穷光蛋了,无论你们的观点对或错,这五十分我只能分给你们中我认为对我帮助最大的两个了。所以请大家见谅。
虽然实现了目的,但我依然迷茫:
1、为什么要进行Menxin的处理呢?(我用的是AdoQuery 连Sql Server,自动编号字段是int identity)
2、我所有的表都设了自动编号的字段,为何有些表有问题(目前有一张表有问题),有些表又没问题?
3、为何有事的那张表有些记录永远都没问题,有些记录永远都有问题呢?
4、ApplyUpdate(-1)这个问题的本质是什么?
谁能告诉我?
 
多人接受答案了。
 

Similar threads

顶部