我用了IP4000里面的RzDBNavigator组件,如果我添加一条新记录并保存后,然后修改或删除该任何一条记录都报错:"无法为更新定位行,一些值可能已在最后一次读取后已更改"
请问这个错误如何解决?

解决方案 »

  1.   

    参考:
    http://www.china-askpro.com/msg43/qa11.shtml
      

  2.   

    To TechnoFantasy(冰儿马甲www.applevb.com) 
    空页面
      

  3.   

    呵呵!打开了,可解决方法不行,因为我没写一行代码,都是通过RzDBNavigator组件来完成了.
      

  4.   

    这就是懒办法导致的结果,我从来都是一句一句写SQL语句的,决不会出现这种问题。
      

  5.   

    我也遇见过这样的问题,当时很郁闷,后来才发现:
    你要操作的Query里面没有查询出来结果,原因:
    1、QUERY没有打开。
    2、打开了,没有取出来值。
      

  6.   

    在添加记录前,加
    QUERY.CLOSE;
    QUERY.OPEN;
      

  7.   

    1\有的字段设置为不允许空,但是你没有赋值就会出现这样的情况。
    2\又重复纪录
    3、 ado版本低,只有98才会出现这种情况。
    一般就是3个原因,我碰到过很多次,仔细检查代码!
      

  8.   

    TO:  pokemonFK
       我只是对一个表操作,所以不存在主从关系.To: qwertyasd(昊),podianliangshui(泼点凉水)
       也不是主健问题,因为我添加记录没有问题,比如我连续添加记录都没有问题,而且记录都已经存在.只是如果我不退出窗体重新进入的话.点击"修改"或"删除"按钮就出现标题所说的错误.如果我关闭窗体重新进入的话,一切正常.可以修改或删除;如果再添加记录后,点击"修改"或"删除"按钮就又出现标题所说的错误.
      

  9.   

    TO:tgtcn(tgtcn) 我以前试过在保存后
    QUERY.CLOSE;
    QUERY.OPEN;
    可这样做,每次保存后,记录就跑到第一条上了.用户操作非常不方便,老是找不着他刚修改的那条记录.
      

  10.   

    你是不是有设出发器,有的话,删掉,再在“删除”事件中写 DELETE FROM TABLE WHERE。
      

  11.   

    没有触发器,我是用IP4000里面的RzDBNavigator组件删除,没写代码
      

  12.   

    Q1.Close;
          Q1.SQL.Clear;
          q1.SQL.Add('delete from Dj_xsreciept_item where fcode     
    ='+''''+dbtxt.Text+'''') ;
          q1.ExecSQL;
         q1.Close;
         q1.SQL.Clear;
         q1.SQL.Add('select * from Dj_xsreciept_item where fcode =:fCode') ;
         q1.Open;
    搞个参数就可以了 !
      

  13.   

    这个错误有很多原因都会引起,比如多用户环境,A编辑的数据,被B用户删除了。
    或者你的主键设置,如果用了浮点型类型字段作主键也可能引起,
    如果在多层环境下,和你的DataSetProvider的UpdateMode设置为upWhereAll,
    upWhereKeyOnly...都有关系。还有就是你后台有没有
    触发器,入过触发器里面有Update 或者Delete语句去更新其他表
    而影响行数又为零的话,也可以引起这样的问题。
      

  14.   

    如果你用的是SQL SERVER
    可以用“SQL 事件探查器”跟踪一下
    就会发现问题了!