用COM+ 的自动事务,必须操作的对象支持,用access 调用dtc,会有莫名其妙的错误代码
FailedNo error information available: E_NOINTERFACE(0x80004002).
关于这个问题,微软有一片kb
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q221071&
<WebMethod(transactionOption:=EnterpriseServices.TransactionOption.RequiresNew)> _ Public Function HelloWorld() As String Try ContextUtil.EnableCommit()
DrawMoneyFromA(1000) DepostMoneyToB(1000) ContextUtil.SetComplete() Return "OK!" Catch ex As Exception ContextUtil.SetAbort() Return "Failed" + ex.Message End Try
End Function
Public Sub DrawMoneyFromA(ByVal amount As Long) '从 A 中提取一定的钱 Dim cnn As New OleDb.OleDbConnection(Me.OleDbConnection1.ConnectionString) cnn.Open() Dim cmd As New OleDb.OleDbCommand("Update bank set amount=amount - " & amount & " where bankaccount='A'", cnn) cmd.ExecuteNonQuery()
End Sub
Public Sub DepostMoneyToB(ByVal amount As Long) '从 B 加一定的钱 Dim cnn As New OleDb.OleDbConnection(Me.OleDbConnection1.ConnectionString) cnn.Open() Dim cmd As New OleDb.OleDbCommand("Update bank set amount=amount + " & amount & " where bankaccount='B'", cnn) 'Throw New Exception("ff") cmd.ExecuteNonQuery()
End Sub 
|