主从表ADO缓存更新的问题(200分)

  • 主题发起人 主题发起人 foxliao
  • 开始时间 开始时间
F

foxliao

Unregistered / Unconfirmed
GUEST, unregistred user!
主从表提交代码如下:
begin
try
mydata.ADOConnection1.BeginTrans;
ChildADOQuery.UpdateBatch;
ParentADOQuery.UpdateBatch;
MyData.ADOConnection1.CommitTrans;
except
MyData.ADOConnection1.RollbackTrans;
end;
end;
问题一:当子表违反规则, 纠正后,再提交就会提示错误“BOF或EOF中有一个是‘真’,或者
当前的记录已被删除,所需的操作要求一个当前的记录。”

问题二:当主表违反规则, 就无法再纠正, 会提示数据没有处于修改或插入状态。

我已升级ADO了,只要没违反规则,就可正常提交。
数据库为SQL Server

 
你的问题我没有遇到!
如果实在不行,就在提交前,自己进行检查吧
 
其实更新一下ADO组件,这是一个BUG来的,Borland专门做了一个升级ADO软件:
ftp://ftpc.inprise.com/pub/delphi/devsupport/updates/adoexpress/d5adoupdate2.exe
 
同意fstao的说法,我也碰到同样的问题,下载adoexpress patch2后没事
 
我已安裝了adoexpress patch2,問題确實存在﹐就是對單個表進行缓存更新,在違反規則的情況下也會出錯﹒
大家有興趣可以試一下﹐程序很簡單﹐只有adoconnection1,ADOQuery1,DataSource1,DBGrid1,Button1几個控件.
procedure TForm1.Button1Click(Sender: TObject);
begin
try
adoconnection1.BeginTrans;
adoquery1.UpdateBatch;
adoconnection1.CommitTrans;
except
adoconnection1.RollbackTrans;
raise;
end;
end;

 
是的。安装了补丁后,问题仍然存在。
而且我用query + updatesql 也遇到这样的问题。
不违反规则,没问题,违反了规则就完了,就如同失去了贞洁一样。
 
安装补订后还要再编译一次就行了。
 
为了弄清这个问题,我重编译后又到其它电脑试了一下,当违反规则时,问题还是存在.
比如当某个字段值不能为空而为空时, 再改正过来就会发现,只有改正过的记录才会提交,没有更改的记录(也就是第一次提交没有违反规则的记录)不翼而飞了,虽然没有出错信息,但问题更严重,因为它把问题隐瞒了.
 
不知道是ADO太深奥,还是的确ADO有很多Bug,我在使用时也碰到了很多问题。
 
这问题我以前也遇到过,好象属于“六脉神剑”一类的问题,即时有时无,
后来莫名其妙就好了,实在怪之
大概真是ADO的BUG吧
 
多人接受答案了。
 
后退
顶部