关于ADO出现“数据集已改变,无法更新记录错误”请教

FANGAO 2001-10-25 10:35:46
BCB用ADO连接SQL Server,使用wwDBGrid 录入数据时经常(但不总是)出现“数据集已改变,无法更新记录错误”,请问如何解决?我已经打过ADO补丁包,环境为Windows 2000。 能解决问题的回复给100分!(先给20分, 其余另加,决不食言!)
...全文
102 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyb_star 2001-10-26
  • 打赏
  • 举报
回复
加个主键就好了!
FANGAO 2001-10-26
  • 打赏
  • 举报
回复
虽然是多用户环境, 但现在只有我一个人在测试程序, 为什么会出现这种情况呢?

wanlucky(博博):
我也说清,反正在wwDBGrid里录入数据时, 上下移动几行后在回到原来的位置,再修改, 然后点Post 导航条就可能会出错, 无法跟踪, 实在没办法!
FANGAO 2001-10-26
  • 打赏
  • 举报
回复
1.数据表里有主键
2.只有我一个用户在操作数据库
3.csz_cmy所言 "Debug时终止程序,但数据库未关闭。"的原因可以排除
4.程序中有大量数据需要录入,使用单独控件+存储过程的方法确实不方便,
希望还是用wwDBGrid 来录入.
5.我刚用BCB不到一年,确实不会用事务, 还望望大虾多指点
另外, 谢谢各位大虾的指教, 这20分先分给大家, 继续回答的另外加分!
HEROIN 2001-10-26
  • 打赏
  • 举报
回复
我以前在三层中遇到过,原因是精度不一致引起,但两层好像没有这个问题
另一原因是数据库中使用了错误的触发器
勉励前行 2001-10-26
  • 打赏
  • 举报
回复
我知道的情況是,多用戶下,(Ms SQL Server 2000 + ADO2.6)
甲打開數據庫中一個表,
此時乙將甲打開的表修改一下,如刪除一條記錄,可這情況并不會馬上反映到甲那里,
此時甲要將那條被刪除的記錄修改一下,如更新某字段
出問題了:出现“数据集已改变,无法更新记录”错误
請問:如何解決?
(我到現在還不知道怎么處理,分不夠,我開貼另加!)
hotyei 2001-10-26
  • 打赏
  • 举报
回复
同意wyb_star(孤星),刚学数据库编程而且一开始用Paradox的用户就特易犯错。
csz_cmy 2001-10-26
  • 打赏
  • 举报
回复
可能你Debug时终止程序,但数据库未关闭。再次运行就不能修改!!!
wanlucky 2001-10-26
  • 打赏
  • 举报
回复
出现这个现象的情况原因可能不止一个
一个可能的原因是向孤星说的那样出现重复记录导致无法定位,加一个主健就行,
如果这样不行就先不要用导航条,直接用ADO数据集控件的Post方法试一试.如果还不行,看一看有每没有其他用户在操纵你正在操纵的数据集,如果有的话(即使没有),你都可以用事务来处理,你会用事务吗?
最好的办法就是用存储过程控件,你在SQL Server中把对数据集的操作,如添加,修改,删除等写成存储过程,然后在你的客户端程序中通过存储过程控件(TADOStoredProc)传递参数来调用SQL Server中的存储过程来执行。这样最安全,效果也最好,而且一定能成功。
因为存储过程本身就在一个事务当中,出错会回卷,不影响数据的完整性,而且sql server
会很安全的执行存储过程即使有多个用户同时在操作同一个数据集。
建议最好用存储过程.
wanlucky 2001-10-25
  • 打赏
  • 举报
回复
能否把问题说的更详细点,我想回答。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧