也就是说在这句If MsgBox("", vbYesNo + vbDefaultButton2 "") = vbYes Then
等待用户回答时,其它用户是否能删除我在操作的记录的内容。

解决方案 »

  1.   

    楼上能举例吗?我写了一段代码,不知是错在哪里了,你能帮我指出吗?以下代码在网络正常时无误,但在其中一个连不上发生错误时执行了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