我写了一段代码,不知是错在哪里了,你能帮我指出吗?以下代码在网络正常时无误,但在其中一个连不上发生错误时执行了Abort事件没有回滚是为什么?Option ExplicitPrivate Const AccessStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\db1.mdb;Persist Security Info=False"Private Const SQLstr As String = "Provider=SQLOLEDB.1;Password=790330;Persist Security Info=True;User ID=sa;Initial Catalog=vegetable"Private AccessConn As ADODB.Connection
Private SQLConn As ADODB.ConnectionPrivate d As TransactionContextPrivate ReadData As New ADODB.RecordsetPublic Function Process() As Boolean    Set d = CreateObject("TxCtx.TransactionContext")
    
   
    If Access() Then
        If SQL() Then
            d.Commit
            Process = True
        Else
            d.Abort             '这句为什么没有用
            Process = False
        End If
    Else
        d.Abort
        Process = False
    End If
    
    
End FunctionPrivate Function Access() As Boolean
On Error GoTo ERR_ACCESS
    Dim AccessRD As New ADODB.Recordset
    Dim j As Integer
    Dim s As String
    
    Set AccessConn = New ADODB.Connection
    
    AccessConn.CommandTimeout = 30
    AccessConn.CursorLocation = adUseClient
    AccessConn.Open AccessStr
    
    
    AccessRD.Open "SELECT top 1 * FROM USERMST WHERE [PASSWORD]<>'Y'", AccessConn
    
    If Not AccessRD.EOF Then
        s = "UPDATE USERMST SET [PASSWORD]='Y' WHERE usermst='" & CStr(AccessRD(0)) & "'"
        AccessConn.Execute s, j
        Set ReadData = AccessRD
        If j > 0 Then
            Access = True
        Else
            Access = False
        End If
    Else
        Access = False
    End If
    
    Exit Function
ERR_ACCESS:
    MsgBox Err.Number & Err.Description
    Access = False
End FunctionPrivate Function SQL() As Boolean
On Error GoTo ERR_SQL
    Dim SQLRD As New ADODB.Record
    Dim j As Integer
    Set SQLConn = New ADODB.Connection
    
    SQLConn.CommandTimeout = 10
    SQLConn.CursorLocation = adUseClient
    SQLConn.Open SQLstr
    
    If Not ReadData.EOF Then
        SQLConn.Execute "INSERT INTO a (xID,xNAME) VALUES ('" & CStr(ReadData(0)) & "','" & CStr(ReadData(1)) & " ')", j
        If j > 0 Then
            SQL = True
        Else
            SQL = False
        End If
    Else
        SQL = False
    End If
    
    Exit Function
ERR_SQL:
    MsgBox Err.Number & Err.Description
    SQL = False
End Function