用COM+ 的自动事务,必须操作的对象支持,用access 调用dtc,会有莫名其妙的错误代码
FailedNo error information available: E_NOINTERFACE(0x80004002).
关于这个问题,微软有一片kb
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q221071 &
1<webmethod(transactionoption:=enterpriseservices.transactionoption.requiresnew)> _
2Public Function HelloWorld() As String
3Try
4ContextUtil.EnableCommit()
5
6DrawMoneyFromA(1000)
7DepostMoneyToB(1000)
8ContextUtil.SetComplete()
9Return "OK!"
10Catch ex As Exception
11ContextUtil.SetAbort()
12Return "Failed" + ex.Message
13End Try
14
15
16End Function
17
18
19Public Sub DrawMoneyFromA(ByVal amount As Long)
20'从 A 中提取一定的钱
21Dim cnn As New OleDb.OleDbConnection(Me.OleDbConnection1.ConnectionString)
22cnn.Open()
23Dim cmd As New OleDb.OleDbCommand("Update bank set amount=amount - " & amount & " where bankaccount='A'", cnn)
24cmd.ExecuteNonQuery()
25
26End Sub
27
28Public Sub DepostMoneyToB(ByVal amount As Long)
29'从 B 加一定的钱
30Dim cnn As New OleDb.OleDbConnection(Me.OleDbConnection1.ConnectionString)
31cnn.Open()
32Dim cmd As New OleDb.OleDbCommand("Update bank set amount=amount + " & amount & " where bankaccount='B'", cnn)
33'Throw New Exception("ff")
34cmd.ExecuteNonQuery()
35
36End Sub</webmethod(transactionoption:=enterpriseservices.transactionoption.requiresnew)>