我哪里错了(COM+的应用是不是应该这样写)
mqmmx 2004-10-31 04:12:35 我写了一段代码,不知是错在哪里了,你能帮我指出吗?以下代码在网络正常时无误,但在其中一个连不上发生错误时执行了Abort事件没有回滚是为什么?
Option Explicit
Private 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.Connection
Private d As TransactionContext
Private ReadData As New ADODB.Recordset
Public 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 Function
Private 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 Function
Private 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