现在的情况是,如果SQL语句有错,会自动回滚,如果无错则提交事务。但问题是无论回滚或提交都不会返回错误信息,所以无法直观的知道是否提交成功我的VB语句是这样的 :On Error GoTo TransErr
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
    cn.ConnectionString = PublicStr
    cn.Open
    cn.BeginTrans
    cn.Execute (strAdoSQL)
    cn.CommitTrans
    MsgBox "所选操作成功!", 0 + 48, "操作成功!"    Set cn = Nothing
  End If
  TransErr: '事务错误处理
  Screen.MousePointer = 0
  If Err.Number <> 0 Then
    cn.RollbackTrans
    MsgBox "所选操作失败!", 0 + 48, "操作失败!"
    If cn.State <> 0 Then cn.Close
    Exit Sub
  End IfstrAdoSQL为之前组成的SQL语句组,有几个语句拼接而成的。现在就是 就算有回滚,也不会跳到TransErr这里。
所以,我想请问下,有什么方法可以知道事务执行后究竟是回滚还是提交成功啊???

解决方案 »

  1.   


    额~~还有没更直接的办法呢? 比如可以通过什么状态值来获取是执行还是回滚呢 就像STATE那些一样
      

  2.   

    数据的Rockback与Error是两个概念,从你代码来看,只有代码发生错误了,才跳至TransErr: '事务错误处理。
      

  3.   

    我没这样用过,你试试
    Dim WithEvents objConnection As ADODB.ConnectionPrivate Sub objConnection_RollbackTransComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)End Sub