0

だから私はodbc接続を介してテーブルをリンクしているmsaccess2010dbを持っています。

トランザクションを完了するマクロ(在庫アプリケーション)がありました。マルチユーザーがマクロを使用していると、マクロ自体が重複してエラーが発生していました。

マクロをパブリック関数にしましたが、問題は解決しませんでした。

すべてが完了していなくてもロールバックできるトランザクションメソッドを使用するようにしようとしています。

私は非常に近いと思いますが、実行中のクエリに問題があり、テーブルがodbc接続によってSQLにリンクされていることが原因であると恐れています。以下にコードを投稿しています。誰かアイデアがあれば大歓迎です。

オプション比較データベース

'------------------------------------------------------------
' CompleteTransactionsMOD 
'
'------------------------------------------------------------
Public Function CompleteTransactionsMOD()
  Dim bSuccess As Boolean
  Dim iCounter As Integer
  Do While bSuccess = False And iCounter < 3
    Debug.Print "Loop " & iCounter
    bSuccess = CompleteTransactionsMOD_Loop()
    iCounter = iCounter + 1
  Loop
  If bSuccess Then
      MsgBox "Transactions completed successfully"
  Else
      MsgBox "Transactions failed to complete after repeated attempts"
  End If
End Function

Public Function CompleteTransactionsMOD_Loop() As Boolean
  DBEngine.BeginTrans
  On Error GoTo CompleteTransactionsMOD_Loop_Err

  With CurrentDb
   .Execute "UpdateInOutTrantblQRY", dbFailOnError
   .Execute "UpdateTranTypeQRY", dbFailOnError
   .Execute "PullToShipTransHandlingQRY", dbFailOnError
   .Execute "TransreadyInDupLocQRY", dbFailOnError
   .Execute "TransreadyOutDupLocQRY", dbFailOnError
   .Execute "AppendNewLocToInvInQry", dbFailOnError
   .Execute "UpdateNewLocToInvNegQRY", dbFailOnError
   .Execute "TrancomplastQRY", dbFailOnError
   .Execute "InvLocFindNegQRY", dbFailOnError
   .Execute "DelZeroQInvLocQRY", dbFailOnError

  End With
  DBEngine.CommitTrans
  CompleteTransactionsMOD_Loop = True

CompleteTransactionsMOD_Loop_Exit:
  Exit Function

CompleteTransactionsMOD_Loop_Err:
  DBEngine.Rollback
  Debug.Print Err.Description
  CompleteTransactionsMOD_Loop = False
  Resume CompleteTransactionsMOD_Loop_Exit


End Function
4

0 に答える 0