经常莫明其妙地出现这种错误,这是怎么回事啊????!

解决方案 »

  1.   

    1、不要FITER和ADOQUERY1和TABLE。NEXT这种方式混用,会出现你上面这种情况
    2、记录录指针没有定位到有记录
      

  2.   

    Delphi是旧的,要下一个补丁才得
      

  3.   

    要注意的問題很多,如append時要填充default值....
      

  4.   

    最好是你建一个主键什么的,或则索引,另外最好用adodateset,
      

  5.   

    1.build unique index
    2.use refresh after you operated the ADOtable or ADOquery
    3.go over your program source, and found the logical error.:)
      

  6.   

    "即修改刚刚插入的记录,系统老是提示我无法为更新行集定位,一些值可能再最后读取时已改变"-----关键:
      数据表中如果有Default值,而你新增(Append)后并未填写这些Default值:
      Post;
      (未填写这些Default值的栏位字段在AdoDataset中为Null,而DBMS中的栏位字段值自动设为: Default !!!
      此时:
      Edit;
      Post;=====>(Null<>Default),Adodataset 发现有人更新了数据!!
      So:
         _______________________________________________
        |                                               |
        | 无法为更新行集定位,一些值可能再最后读取时已改变    |
        |_______________________________________________|
      
      满意了吧?
      

  7.   

    应该要把ADO的
    CursorLocation设为clUseServer
    CursorType设为ctKeyset
    我想是因为本地数据与服务器的数据不同步
    的原因,这应该是ADO的BUG吧,
    如果把CursorLocation设为clUseServer
    就不会出现这样的问题了
      

  8.   

    "即修改刚刚插入的记录,系统老是提示我无法为更新行集定位,一些值可能再最后读取时已改变"-----关键:可能是表中有自增长字段,当你插入一条记录后如果用DBGRID的话它不会帮你维护
    这些自增长的字段, 所以不管你是基于主健更新(一般是自增长列)还是WHEREALL都会有更新的问题(针对刚插入的记录) 
    其实打开SQLMONITOR或者SQLSEVER的事件查看器看看一般都能找到问题之所在