程序如下:Sub Test
    On Error Goto Error_Handle
    ...(A)
    oCN.BeginTrans
    ...(B)
    oCN.CommitTrans
    Exit Sub
Error_Handle:
    ...(C)
    oCN.RollbackTrans
End Sub问题是如果在 A 程序段已经出现了错误,那 RollbackTrans 将会出现错误,能不能在 C 程序段加入检测,看 connection 是否有未提交的事务呢?

解决方案 »

  1.   

    土办法,oCN.CommitTrans后面加个标志fTransCommitted=True,oCN.RollbackTrans前面加上If fTransCommitted Then
      

  2.   

    ...(C)
        oCN.RollbackTrans似乎没有什么好办法,不如在C处加上一句On Error Resume Next
      

  3.   

    这样比较简单:Sub Test
        On Error Goto Error_Handle
        ...(A)
    10    oCN.BeginTrans
        ...(B)
        oCN.CommitTrans
        Exit Sub
    Error_Handle:
        ...(C)
        if erl=10 then
            oCN.RollbackTrans
        end if
    End Sub
      

  4.   

    呵呵自己加个标志!用boolean型的变量!
      

  5.   

    谢谢各位的回复!我原本是希望看看能不能找到 connection 对象的一个属性或方法来判断。看 ADO 的文档没有发现,就想上来问问看有没有新发现。还是老老实实地自己加个标志好,呵呵