SQL数据库,建立一个表后,当表里存在两条相同的记录,对这两条记录中的任一条进行操作时,系统都会报错,报错信息为"无法为更新定位行.一些值可能已在最后一次读取后已更改."
建表的语句如下:
   DataModule1.ADOQuery4.Close;
   DataModule1.ADOQuery4.sql.Clear;
   DataModule1.ADOQuery4.sql.Add('CREATE TABLE #t_tmp_555');
   DataModule1.ADOQuery4.SQL.Add('(ddh nvarchar(15) , pp nvarchar(50) , xqno nvarchar(20) , ');
   DataModule1.ADOQuery4.SQL.Add('cpxh nvarchar(60) , mc nvarchar(50) , wlbm nvarchar(9) , ');
   DataModule1.ADOQuery4.SQL.Add('gg nvarchar(255) , dw nvarchar(10) , sl numeric(10,2) ,');
   DataModule1.ADOQuery4.SQL.Add('dj numeric(9,4) , djyl int , xj numeric(12,4) ,');
   DataModule1.ADOQuery4.SQL.Add('jhq nvarchar(20) , gysname nvarchar(40) )');
   DataModule1.ADOQuery4.ExecSQL;这要如何解决啊!

解决方案 »

  1.   

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

  2.   

    我没有用触发器啊!
    也没有用UPDATE方法,
    很奇怪啊,
    要如何解决!
      

  3.   

    可能是因为有默认值的问题,特点是在Insert操作时,建议你在AfterPost事件里加上query.refesh
      

  4.   

    主要是是默认值的问题,在新增的时候,在OnNewRecords的事件中,将一些默认字段进行赋值。