为什么我的程序总是出现'无法为更新行集定位一些值可能已在最后读取后改变'这样的提示! 为什么我的程序总是出现'无法为更新行集定位一些值可能已在最后读取后改变'这样的提示!还有当我的表中有两条相同的记录时,当我删除其中的一条(在WWDBGRID中)就会出现:"键列信息不足或不正确更新影响到过多的行"这样的错误,然后会把相同的记录全部删除,这会不会与我所用的控件有关,我用的是IP3000的数据库控件!请各位大虾帮忙!急! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也遇到过这样的问题,是不是ADO版本的问题? 有可能是你增加了记录没有提交刷新,或如果是用的ADO,可能没打补丁,最好Borland发布的补丁都打好 出现这样的问题有几种情况:“键列信息不足或不正确更新影响到过多的行”:你的表没有建主键或者主索引,所以出现完全相同的几列数据导致删除时无法定位;'无法为更新行集定位一些值可能已在最后读取后改变':与上有关系,不过更大的可能是你使用的数据集控件,如table,它有一个updatemode属性,最好把它的值写成是updatewherekey;否则在updatewhereall模式下,对一些float字段的判断就会出现这样的错 谢谢以上几位,我的表是没有主键,我加上后"键列信息不足或不正确更新影响到过多的行"这个问题已经解决.但是还是会出现'无法为更新行集定位一些值可能已在最后读取后改变'这样的问题我用的是ADOQUERY控件,我的ADO和BORLAND的补丁都已经打了. 把Ado的CursorLoacation改成crUseServer即可解决“无法更新……最后读去改变”错误,可能原因是你的数据库有默认值,你插入新纪录的时候,会被默认值填充,而你的程序用的是crUseClient,因此没有更新过来。至于键列信息不足等,可能你解决上个问题之后,这个问题自然就解救了。 按照Kingron的指点,问题解决了,我想请问KINGRON,crUseClient和crUseServer有什么不同,对性能会有什么影响?请指教!thanks! 改为crUseServer?!这样的效率上是不是有影响(在一程度上)!而我发现,该错误仅在新增记录时会发生!而且,是在CancelBatch时,指针仍在“新记录”上时才会发生!我也是看过ADO2.6的Reference后才知道的!依照Reference的做法,只要把指错移开就是了...我曾试着修改ADO源程序,呵呵,因为技术水平与时间的因素,现在仍没有开工:-) 性能会有很大的影响!使用Server的性能要比Client低!如果需要大量的数据进行插入的话,特别明显。如果是浏览数据,考虑用Client,添加数据考虑用Server,若你在Insert纪录的时候,手工在客户端填充默认值,这样比较好,可以使用Client方式,而效率也能得到保证。 告诉你,你需要安装ADO的补丁。一个专门的补丁。 你的table控件要定位,不能随时换动,adoconnection最好只要一个。 我不可能要求用户的鼠标不乱动,我只用了一个adoconnection '无法为更新行集定位一些值可能已在最后读取后改变' 的错误原因很简单:是由于设置了默认值造成的。解决方法:在使用之前调用refresh即可,或者把相关字段的AutoGenerateValue属性设成arDefault即可,最好不要把CursorLoacation改成crUseServer 在多用户环境下也会出现这种,就是两个人同时修改同一条数据时,可以用锁的方法解决,或者把cursorlaction 改为updatedatebatch就好一点 请问下面这个SQL语句在Delphi里面怎么写? 关于DATETIMEPICKER的问题! IMAGE 我要报复!我被炸了?谁个我个威力大的qq炸弹!我给你50分! 关于边下载边播放的实现问题! 请教 请问该如何写这个排序? 关于DELPHI开发的动态链接库问题 简繁转换 读取串口的BCD编码的数据? 如何实现想ACDSee一样的图片拖动的功能 当显示器分辨率很低时,delphi中的放置了数据库控件的窗体不能显示?
“键列信息不足或不正确更新影响到过多的行”:你的表没有建主键或者主索引,所以出现完全相同的几列数据导致删除时无法定位;'无法为更新行集定位一些值可能已在最后读取后改变':与上有关系,不过更大的可能是你使用的数据集控件,如table,它有一个updatemode属性,最好把它的值写成是updatewherekey;否则在updatewhereall模式下,对一些float字段的判断就会出现这样的错
但是还是会出现'无法为更新行集定位一些值可能已在最后读取后改变'这样的问题
我用的是ADOQUERY控件,我的ADO和BORLAND的补丁都已经打了.
而且,是在CancelBatch时,指针仍在“新记录”上时才会发生!
我也是看过ADO2.6的Reference后才知道的!依照Reference的做法,只要把指错移开就是了...
我曾试着修改ADO源程序,呵呵,因为技术水平与时间的因素,现在仍没有开工:-)
可以用锁的方法解决,或者把cursorlaction 改为updatedatebatch就好
一点