在sql servr中都会出现这个错误,原因可能是长时间没有将RECORDSET刷新了。

解决方案 »

  1.   

    如果是多用户环境,有可能是其他用户更改了数据,
    但是大部分原因,都是因为你的RecordSet没有主键,或者主键不确定引起的。这不是SqlServer的问题,也不是Ado的问题,是程序设计的问题。
      

  2.   

    To  lincanwen(海) 在ACCESS中也有同样的问题,不存在长时间没刷新的问题,事实上只要输入几个数据问题就来了To fuxc(Michael  在access中,recordset有自动编号(唯一索引)应该可以起主键作用,而且只有一个用户.如果可以的话,您用两分钟时间做个实验(用access)就会发现这个错误!
      

  3.   

    TO lincanwen(海) 在access中有同样的错误,也不是长时间没有刷新,事实上从打开程序输入数据到出错,就是连续的几个步骤(1分钟可能都不到)To fuxc(Michael) 只有一个用户连到access中,且表中有索引唯一的自动编号字段,应该可以起到主键的作用
      

  4.   

    我也遇到了的,是通过ODBC连接INFORMIX数据库进行更新的时候出的这个错,我甚至于是直接打开某一字段然后马上UPDATE也出现这个错误,但是数据是写进去了的!
      

  5.   

    我也长期被这个问题困扰,也有很多兄弟提出许多原因及解决方案,但也都未彻底解决,最后我只得仅仅用datagrid做界面,而当数据发生改变要提交数据库时,就用sql语句来写数据,不用adodc的update等方法,虽然麻烦,但却从未出问题,长痛不如短痛,兄弟,趁早用sql吧
      

  6.   

    我的建议是不要用ADODC而用ADO对象和MSFLEXGRID的组合,虽然复杂,可是基本不出错,注意,是msflexgrid而不是mshflexgrid,不要用绑定!
      

  7.   

    To qhzxcz(audio) 
    用grid可以大幅提高生产率,而且也方便用户的操作,如果绕很多弯子,就很不爽了。对了,我前段时间一个项目并好象还没有这样的问题,当时我是用类把recordset封装起来了,再赋给grid ???
      

  8.   

    这里有几种情况
    1。没有主健
    2。同时有两个以上的程序调用此ado.recordset
    3。锁的类型在运行中被变换了
    解决此问题的方法是,用悲观锁
    如果是三层结构,前台程序要和中间层统一,不然,即使加了锁也无用
      

  9.   

    to xdd1125(成长快乐) (
    我的意思不是不用grid,用户的操作当然也是在grid中进行,只是在写数据到数据库时不用ADODC的update方法,而是用sql语句实现,记住,只是在写数据时用sql,其余的依然一律不变,用grid
      

  10.   

    To  qhzxcz(audio) 我明白您的意思。而且我也从不用adodc,我是用set grid.source=rs绑定的。试想,如果绑定而不自动更新,就不好玩了To VB_support() 和 waitforyoueveryday(天天等你)
    关于您提到的加锁,我的应用只是一个简单的桌面程序,单用户,所以也不存在加锁问题;主键的确没有刻意去设它,因有唯一索引的自动编号字段。另外的几个问题都不存在。
      

  11.   

    to xdd1125(成长快乐) 
    你是用rs.update提交数据库吧,同样会存在这样的问题.
    以下是一数据操作高手的体会:对游标的研究后,我得出了一种最高效的ado操作方法,不知对不对,大家看看
     1.建服务端只向前游标,只读锁定的recordset对象
    2.sql查询后,把结果集从recordset读入表格控件
    3.然后这个recordset就没用了,可以删掉
    4.以后所有的增加,删除,修改更新都用sql命令实现,并同时修改数据表格,以反映给用户,如果排序啊,上下浏览记录啊,这些直接操作表格就可以了
      

  12.   

    我就是因为这个问题很久以前就放弃了使用adodc控件绑定的方法,我做过很多次实验,问题肯定不是因为以下的原因:
    1.多用户
    2.没有主键
    3.没有加琐
    4.机器问题
    我也不敢说是bug,反正我现在的datagrid都是只读的,写数据库用另外的代码处理.
      

  13.   

    很多情况下是因为自动增长的字段,增加新记录后,recordset无法及时得到数据库中自动增加的id的数值。
    在适当的时候refresh就可以了
      

  14.   

    To fuxc(Michael) :
    这种错误在grid的AllowAddnew=false时,即只是编辑时(并没有增加),一样会出现的!!!
      

  15.   

    期待真正的ADO高手出现!如果是ADO的错,那么这个BUG应该早就被MS给更正了(我用的是2.5),看来还是另有原因。    看看那么多同类的贴子,想想那么多受该错误困扰的人们,我们是不是要申请开一个ADO专栏了!
    up!up!up!