如何能保证ado记录集可以正常close呀?因为如果有未完成的更新时,则进行close就报错.
我看到msdn的代码示例中,记录集关闭时都是直接close的,然后 set rs=nothing,可是我将记录集设成立即更新模式时,如果更新没有正常完成.则关闭这个记录集时就会报错,提示:
实时错误 "3219"
在些环境中不充许操作
如何解决这个问题呀,因为更新异常是很正常的事.
我定义了一个窗体级的ado记录集,每次更新后要重新打开数据,这就要先关闭这个记录集.可是如果有未完成更新则关闭时就报以上这个错.我问的是一个最初级的问题了,可是我不会处理,大家是如何处理这类问题的呢?
每次用记录集获取数据时,都先要关闭它,然后重新打开.
在close前要加判断吗?如何加.

解决方案 »

  1.   

    换一种方法:不用更新记录集的方式编辑数据库,改用连接对象的 Execute 方法执行 SQL。然后 Requery 记录集。
      

  2.   

    换一种方法:不用更新记录集的方式编辑数据库,改用连接对象的 Execute 方法执行 SQL。然后 Requery 记录集。
    ------------------------------
    谢谢,是给我提供一个思路,我想试试.
    但是我还要问一下:既然ado中设计了记录集更新的方法,所以我想应该比较高效吧.总觉得用sql方法更新数据库有点老土,[不知这种看法对不对],而且用ado自已的更新,代码要少很多,因为很多事情ado都封装好了.所以就学习的角度而言,我还想明白一下,也就是不用sql方法而用ado的update方法时,如何避免我说的问题.
      

  3.   

    你的看法是错误的 sql的执行效率比vb的要高上很多  尤其是你用循环的时候就会发现了
      

  4.   

    1 实际上在资深的程序员中,SQL 方法用得更多。原因:它实际上是将 SQL 命令发送给数据库引擎,让它来完成。你可以继续你的 VB 代码不受更新进度的牵制。你也可以连续发出 SQL 命令,它们都将进入任务队列。更重要的是,你的记录集对象与当前的更新操作没有关系,可以自由地关闭和打开。所以,它更灵活。 2 在记录集对象执行 Update 方法后,它就被挂起了。也就是说,在 Update 完成之前,不接受其他操作。否则将回丢失数据。你要么等待它更新完成再关闭记录集和窗体,要么在下次进入时不要打开记录集。记录集的状态可以通过它的 State 属性来获取:adStateClosed            默认,指示对象是关闭的。 
    adStateOpen              对象是打开的。 
    adStateConnecting        Recordset 对象正在连接。 
    adStateExecuting         Recordset 对象正在执行命令。 
    adStateFetching          Recordset 对象的行正在被读取。 
      

  5.   

    谢了,如何检测记录集处理挂起状态呢?谢谢.
    我想可以在close之前判断一下记录集是不是处于挂起状态.如果处于挂起状态则要先进行rs.cancelupdate,然后再rs.close
    可是如何判断是否处于挂起呢?如果每次rs.close之前都加上rs.cancelupdate好象也不行吧.
    请老师继续指教.
      

  6.   

    不用更新记录集的方式编辑数据库,改用连接对象的 Execute 方法执行 SQL.
    这种方法简单好用
      

  7.   

    不用更新记录集的方式编辑数据库,改用连接对象的 Execute 方法执行 SQL.
    这种方法简单好用
    -------------------
    是的,这样免除了未完成更新的问题,可是你想想,如果窗体上有几十个文本框,更新时,如果用sql代码来更新,代码量是很大的,而且如果字段有变化,维护时工作量更大.如果用记录集的更新会方便很多.再者,既然ms设计出ado记录集可以更新的功能,所以我想不应该弃之不用的.
    关键是对它要有一定的理解,我目前就是对ado了解太少了.