巨郁闷,前些天明明调试可以的,折腾了两天都不行,高手帮帮忙。
adoquery1中的数据集是随adoquery2的scroll而改变的,执行
adoquery1.Edit;
adoquery1.FieldByName('f_reportstatus').AsInteger:= 2;
adoquery1.Post; 
时,出错:‘键列信息不足’。
adoquery1中的数据集是随adoquery2的scroll而改变的。
另一处和上面情况类似,出错信息是:‘无法为更新行集定位,一些值可能在最后读取后改变’。

解决方案 »

  1.   

    从来都是直接使用SQL来写的,你这样的写法没有用过,但他有个问题是无法定位在写那一行上,我看到过好多人都使用ParamByName,这样的方式来写的,在ADOQUERY中这样写adoquery1.Parameters.ParamByName(),不要使用FIELDBYNAME,除非你使用定位后才可以吧,没具体试过,理论上是可行的
      

  2.   

    就是说你的ADOQuwey1中用到的列,无法确定
    别这样写了
      

  3.   

    谢过楼上,不过我都是用FieldByName定位列的,只用Parameters来传递参数,没有出现过问题。上面的语句我如果去掉POST就不会出现上述的问题了,应该是无法定位行的问题,但如果不POST,不能保证数据库中数据更新了啊。
      

  4.   

    我估计应该和adoquery1中的数据集是随adoquery2的scroll而改变的有关系,高手再帮帮忙,比较急~~
      

  5.   

    你换在BEFORscroll 事件中写代码
      

  6.   

    如果前几天都可以的,现在不行的话那肯定是改了什么东西,我不单指你的 Source ,还包括你的 System environment 和 DB.
      

  7.   

    应该是你的adoquery1.SQL.tex语句中select后面的字段列表中没把所有关键字列出或adoquery1的字段编辑器过滤了关键字段,检查一下重试
      

  8.   

    无法定位更新行,使因为你的query在用的时候,你的源表内容发生改变,而且你又更改了query的数据,导致在提交的时候无法更新你的query,我也遇到过这种情况