ADO的无法删除数据--奇怪的问题---至今无人回答妥当 (100分)

  • 主题发起人 主题发起人 zhbj2
  • 开始时间 开始时间
Z

zhbj2

Unregistered / Unconfirmed
GUEST, unregistred user!
在c/s结果中,sqlserver的数据库,
ado的locktype=ltbatchoptimistic;
cursortLocation=cluseclient ;
在beforedelete事件中加入删除确定对话框;
每次删除后,updatestatic仍然为usunmodified ;
应该为usdeleted ;
使用ado.updatebatch也无法更新刚刚删除的记录;
再次打开系统,刚刚的记录又出现了^^^^^^^
但编辑、添加却可以正常触发useditted 和usinserted 属性,
保存更新正常的 。
 
不会吧,把你的代码贴出来看看?
 
beforedelete的代码如下:
begin
if application.MessageBox('确定删除吗?','确定操作?,1+32+256)=idcancel then abort ;
End ;
在beforeclose 中加入
begin
if TADOquery(Datset).UpdateStatus in [usModified, usInserted, usDeleted] then
TADOquery(Datset).updatebatch ;
end ;
其中ado.locktype=ltbatchoptimistic ;CursorLocation=clUseClient
 
你更换一下ado.locktype的值试一下。
 
delphi的sql server的ado有bug.
你可以看看是不是这个原因.
网上有补丁,你可以看看我以前问过这个问题.
 
以上办法均不妥当 ,
”次时代“ 的方法在删除事务期间是不好控制的。
 
把cursortLocation=cluseclient
改为cluserServer
 
直接在某个按钮中这样写:
adodataset.delete;
adodataset.updatebatch;
 
把cursortLocation=cluseclient
改为cluserServer和
adodataset.delete;
adodataset.updatebatch;一样的故障
 
做一个简单程序,连接到你作删除有错误的数据库,这个程序只有一个
form,adoquery,button,在按钮中写
adoquery.delete;
adoquery.updatebatch;
如果不行,就是数据库有问题或ADO有问题。
另,你说不行,请把出错信息贴出来。
 
原来ado本身并不触发usdeleted ,我认为是ado的bug ;
所以按照updatestatic提交是要出漏子的,请大家注意,
后又在afterdelete 中加入updatebatch便可以了,
phljh虽然没有说出原因,但却可行,给你吧!
 
后退
顶部