无法为更新行集定位:一些值可能已在最后读取后改变,详细情况如下

youyu111 2006-06-30 05:03:24
采用delphi6.0 ,SQL Server 2000开发的2层框架的系统。
在.exe快捷方式的图标的右键属性-目标,设置数据库连接时登陆时,如果采用的数据源是ODBC,在dbgride中修改数据类型字段时可以操作,没有任何错误提示;
当采用ole db数据源时,在dbgride中修改数据类型字段后,报:
“无法为更新行集定位:一些值可能已在最后读取后改变”的系统提示。
因为ole db连接速度较ODBC快一倍,所以准备采用ole db,但是系统开发之初都用ODBC,所以现在调整时遇到了如下问题。
网上查到Access一个有一点类似可能的原因是微软的技术问题,但没找到对SQL Server 2000是否也同样?
请大家帮忙怎样才能确切查到该问题,或者请求向微软技术支持的帮助?或者有碰到过这样问题的请不吝赐教,谢谢!
...全文
290 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
youyu111 2006-07-05
  • 打赏
  • 举报
回复
又发现了一点问题,主要是采用 Ole DB For SQL Server连接时,修改float,real,money类型的字段时会报错;如果采用 Ole DB For ODBC Drivers修改这样的类型就没有问题,难道前者不支持对浮点类型字段的修改吗?????
youyu111 2006-07-04
  • 打赏
  • 举报
回复
系统用的win 2000 sever,如果升级,升级到哪个版本?如果升级没有解决,还需要恢复到原来版本吗?怎么恢复?恢复后会产生混合问题吗(既有2.6版本又有2.7或2.8版本呢)?
youyu111 2006-07-04
  • 打赏
  • 举报
回复
查了本地的MDAC为2.6版本,没有打过delphi 6.0的补丁
Hank 2006-07-03
  • 打赏
  • 举报
回复
那你升级MDAC了吗?
那你更新DELPHI 6.0 SP2了吗?
youyu111 2006-07-03
  • 打赏
  • 举报
回复
今天看了一天代码,检查了更新操作的表,该表有建主键,可以认为是唯一索引。检查该表中的数据,并没有发现有重复的数据。虽然报该提示,但是刷新后发现数据实际已经更新。
  • 打赏
  • 举报
回复
没有建立唯一索引引起的,
或者dataset在返回数据集合里没有唯一的索引
Hank 2006-07-02
  • 打赏
  • 举报
回复
另外,TADOQuery实际是TDataSet和TADODataSet的一个混合体,而前者是BDE模式调用时的玩意,所以问题多多。

其实只要看看MS关于ADO开发的资料就明白了,Borland在这方面是不行。
Hank 2006-07-02
  • 打赏
  • 举报
回复
是的,用ODBC是没有这种问题的,因为数据库引擎不同。
通过ODBC实际上是通过ODBC+BDE连接,数据库引擎是纯MS的,不存在这个问题。

但是ADO(或者OLE DB)就不同了,实际上是Borland以COM模式或者说ActiveX/DLL调用MS的ADO引擎,问题多多,具体可以看ADODB.PAS文件去察看
youyu111 2006-07-02
  • 打赏
  • 举报
回复
我前面有提到采用ODBC连接时,对同一个界面同一条数据记录操作时,没有这样错误提示,
那ODBC处理怎么就没有问题呢?(操作的数据表中有建立索引的,不过不能确定是不是唯一索引。明天在公司查看后回复你)
Hank 2006-07-01
  • 打赏
  • 举报
回复
不明白?

原因其实很简单,因为你的数据表中有重复记录,OLE DB的早期版本处理这个问题不太好,解决方案就是:

1、数据表建立索引,这是最有效的解决方案
2、要升级MDAC,也就是包括OLE DB的那个资源包,是MS的,现在最高版本是2.8,98SE以上操作系统集成,但是版本不一样,XP集成的是2.7,可以到MS去下载
3、所谓的其它方式就是通过程序控制数据表不能有重复记录,譬如保存的时候首先判断是否有重复记录否则不予保存
Rubi 2006-07-01
  • 打赏
  • 举报
回复
建立索引,支持
  • 打赏
  • 举报
回复
9494,建立个唯一索引就行。其实,一个表中存在多条完全相同的记录是不合逻辑的
youyu111 2006-06-30
  • 打赏
  • 举报
回复
没看明白您说的意思,能说明白点吗,谢谢
Hank 2006-06-30
  • 打赏
  • 举报
回复
1、必须建立数据库唯一索引
2、升级MDAC

其实只要1就可以了,或者通过别的模式控制数据表中没有重复记录

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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