记录集更新如果没有完成,为何就无法close呀?如何做到强制关闭记录集?
今天发现一个很怪的问题,现象是无法获取最新记录,记录集总显示以前已经删除了的记录,这条记录在后台数据库中已经没有了,为何呢?最后找到原因,原来是一上次记录集没有更新成功.所以这个记录集也无法close后再装纳新的数据.
    If rsdata.State = adStateOpen Then
        rsdata.CancelUpdate-----加上这一句就可以了.
        rsdata.Close
    End If
    rsdata.CursorLocation = adUseClient  '使用本地游标
    rsdata.Open strsql, conn, adOpenDynamic, adLockOptimistic
原来代码中没有rsdata.cancelupdate这一句,导致记录集无法close
加上这一句就可以了,可是我并不是解决办法呀?因为更新不成功的情况会很常见.总不能每次close之前总要执行一次rsdata.cancelupdate吧.

解决方案 »

  1.   

    1,如何能强制关闭记录集.
    2.或者如何检则update没有成功.如果没有成功就取消这个更新.
    还有什么好办法呀?
    感觉更新是很难的问题.
      

  2.   

    用这个打开记录集试试,我用的好像没有不成功过 
       rsdata.Open strsql, conn, adOpenKeyset, adLockOptimistic
      

  3.   

    set rsdata=ew adodb.recordset
    rsdata.CursorLocation = adUseClient  '使用本地游标
        rsdata.Open strsql, conn, adOpenDynamic, adLockOptimistic
      

  4.   

    Recordset使用 Close 方法关闭 Recordset 对象的同时,将释放关联的数据和可能已经通过该特定 Recordset 对象对数据进行的独立访问。随后可调用 Open 方法重新打开具有相同属性或已修改属性的 Recordset。在 Recordset 对象关闭后,调用任何需要活动游标的方法将产生错误。如果正在立即更新模式下进行编辑,调用 Close 方法将产生错误,应首先调用 Update 或 CancelUpdate 方法。
      

  5.   

    如果正在立即更新模式下进行编辑,调用 Close 方法将产生错误,应首先调用 Update 或 CancelUpdate 方法。
    ==============================
    谢谢,我想问,在进行close的时,如何判断出这个记录集是否处于更新模式呢?因为如果是更新模式,则要先执行cancelupdate,再执行close,如果不是更新模式,则要直接进行close,如果这时调用cancelupdate,也会报错的.
    也就是说:在关闭一个记录集时,如何保证close时不出错呢???