FailedNo error information available: E_NOINTERFACE(0x80004002).

用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 - " &amp; amount &amp; " 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 + " &amp; amount &amp; " where bankaccount='B'", cnn)   
33'Throw New Exception("ff")   
34cmd.ExecuteNonQuery() 
35
36End Sub</webmethod(transactionoption:=enterpriseservices.transactionoption.requiresnew)>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus