如何判断ADODB.Connection是否已经开始一个事务(调用BeginTrans),而没有调用CommitTrans或RollBackTrans?有没有办法通过Connection的属性或方法判断?

解决方案 »

  1.   

    我是这样判断的
    ReLevel = fxConn.BeginTrans
    If ReLevel > 0 Then
    ‘开始了
    End If
      

  2.   

    谢谢回复!但这种方法不知道是不是已经CommitTrans或RollBackTrans?
      

  3.   

    当然不知道。对于多个用户共享一个数据库,每个用户程序启用BeginTrans后,SQL-Server都为它开辟独立的空间,互不影响。当然,最后更新到数据库的结果,决定于用户CommitTrans的先后。
      

  4.   

    使用类事件
    1.用WithEvent申明Connection。
    2.创建该Connection对象。
    3.分别处理该对象的CommitTransComplete、RollbackTransComplete事件。
    例如:
    Dim WithEvents connEvent as Connection
    Dim conn as New ConnectionPrivate Sub MySub()
        set connEvent = conn        ' Enable event support.
        conn.Open(...)
        ...
        set connEvent = Nothing    ' Disable event support.
        ...
    End SubPrivate Sub connEvent_ConnectComplete(ByVal err as ADODB.Error, & _
     adStatus as ADODB.EventStatus, ByVal pConnection as ADODB.Connection)
        ' Check the error object only if adStatus 
        ' equals adStatusErrorsOccurred.
        ...
    End Sub
      

  5.   

    补充上面,
    BeginTransComplete事件是在事务开始后调用。可以在这里判断。