我用Query_Field.ApplyUpdates来提交修改,结果出现这样的报错:
couldn't perform the edit because another user changed the record
这是为什么??如何改?紧急求救!!快

解决方案 »

  1.   

    这个提示是很有名的,但其实并非是错误,应该是更新数据时逻辑上的问题.
    大意就是在你准备进行更新时,你当前所看到的数据在数据库中已经发生了变化
    (也就是被别人改变了),你要知道,TADODataSet也是发SQL去更新数据库的,
    缺省方式其是索引字段与被改变字段作where匹配字段查找字段来更新,(有几种方式
    ,这是缺省的方式)
    类似
    update tbname set *=*
    where 索引字段=*
    and 被改变字段=*....
    如果这些where字段发生了变化会导致本意要更新一条,但准备被更新的记录条数为0
    或多于1条,就会发生你上述的提示.其实这是很符合逻辑的但有时可能会感到不方便.如果是被其他程序所改变,而你希望有这种情况下更新情况,你可以使用wherekeyonly
    更新方式.另外要注意一种情况:缺省值,在这种情况下,没有其他程序更新数据库,也可能
    发生字段值被改变而引发上述提示,解决办法是取消sqlserver或access字段
    的缺省值.
      

  2.   

    可能的原因:
    1:后台有字段有默认值
    2:浮点数精度
    3:触发器修改了表本身  
    等等,
    你试试在DataSet的AfterPost事件中加入DataSet.Refrash。可能能解决问题!