出现的错误信息是“无法为更新行集定位:一些值可能以在最后读取后改变”,老大,这是什么原因呀??

解决方案 »

  1.   

    所用的数据库为ACESS,不知道为什么,在操作时有时不会出现这个样子的错误,有出现?
      

  2.   

    把数据集的更新模式改成umKeyOnly啊。
    UpdateMode吧。记不清了。
    你自己查一查吧。
    是最后几个属性里面的
      

  3.   

    由于所修改的记录与数据库所存在的记录冲突,导致更改失败(如其他用户已将记录删除),如果没有触发器,其实程序发生警告信息给Errors集合,但不终止程序运行,也不会出实时错误提示。如果你加上触发器,你所进行批更新包括从Deleted表中记录,即所有删除的记录,所有的更新请求都不存在(或已被其它用户删除),所以出现实时运行错误。 
        建议:用Ado对象Update方法代替UpdataBath试一试
      

  4.   

    这个问题是老问题问题关键是在数据表中出现重复记录当Delphi6.0刚刚推出来的时候,很多宣传资料说解决了这个问题,但是在最残酷的测试下,依然出现此问题!最容易出现的地方是:当新增记录的时候,表里面添加了默认值,然后保存。因为Delphi默认不添加空的重复记录(当年FoxPro程序员转Delphi的时候被这个限制搞的头晕脑胀),但是只要有值就可以添加(大量出现在主从关系的从表中,关联字段默认添加),然后就死掉了!所以你的触发器有点是在“FOR UPDATE”上,只有更新时触发,那么INSERT时如何处理,其实这个问题最容易出现在这里!据我的使用及测试经验,一般解决方案有如下几点:1、及时升级你的MDAC(目前是2.7 Refresh 2)及开发工具补丁,通过ADO方式连接数据库这是没有办法的办法,当然不会很彻底;2、给数据库建立唯一索引,这种方法根据实际情况而定,因为很多情况下必须要添加自动递增字段,象有些基础资料数据库根本就不可取3、比较好的办法,全部用手工控制不出现重复记录一般情况下,控制方法主要有:1、尽量不使用DB控件,尤其是DBNavigate控件,通过ADO的时候那玩意实在太弱智;2、多数数据控制可以通过键值控制或者通过触发器控制!
      

  5.   

    -----------------------------------------------------------------------------------------
    我想可能是我用的ADOTABLE对象DELETE后没有更新的原因,但第一次不更新不会出错呀,第二次会出错,这是为什么???
    -----------------------------------------------------------------------------------------
      

  6.   

    我也不知道是怎么回事,就是在Adotable在执行完delete后要close,再激活。我只是在下次delete前,加上了close,active而已,呵呵,就是这个样子的,就OK了!哈哈,你觉得你有分吗?
      

  7.   

    我也不要分,只是碰到问题要讨论清楚对吧。
    close再open是可以,但不是好办法,不止delete,edit也会出现问题的。
      

  8.   

    hmily1688(流浪在中国)说得对,这个问题在ADO中经常出现,有触发器的问题,也有默认值的问题,但是大家还是应该把原因搞清楚。
    delete再close、open是没有办法的办法。我也是这样做的,尤其是在ACCESS编程时。
      

  9.   

    猜测一下,你可能是这样delete的,你用的是sql 语句delete from where  
    而你直接用adotable.delete不就行了吗?这种问题出现的原因很多也不一样,不知道你是如何删除的,还有我遇到过一种情况,如果删除后这个table或query中有数据时不报错,但如果没有数据时报错,就是楼主的哪个错。后来我升级ado的版本就没有问题了。
      

  10.   

    hmily1688、hongjg不要我也要给你们分。哈哈,接好了!