wazawaza
wazawaza
2024/01/31 (水) 09:07:23
複数のSQL実行のためのプロシージャ
Function tryExecute(sqlList As Collection) As String
'## 複数のSQLを実行するFunctionプロシージャ(SQLリストをすべて実行してメッセージを受け取る関数)
'エラーが起きたら「ErrorHandler」へジャンプ
On Error GoTo ErrorHandler
Dim daoWs As DAO.Workspace
Set daoWs = DBEngine(0) 'トランザクションをサポートするオブジェクトを作成
Dim daoDb As DAO.Database
Set daoDb = CurrentDb '接続
daoWs.BeginTrans 'トランザクション開始
Dim strSQL As Variant
For Each strSQL In sqlList 'SQL文リストをループ
daoDb.Execute strSQL '実行
Next strSQL
daoWs.CommitTrans '確定
'成功の場合は空の文字列が入る
tryExecute = ""
'接続解除へジャンプ
GoTo Finally
'エラー処理
ErrorHandler:
tryExecute = "Error #: " & Err.Number & vbNewLine & vbNewLine & Err.Description 'エラーの場合はエラーメッセージが入る
'接続解除
Finally:
If Not daoDb Is Nothing Then
daoDb.Close
Set daoDb = Nothing
End If
If Not daoWs Is Nothing Then 'トランザクション用のオブジェクトを破棄
daoWs.Close
Set daoWs = Nothing
End If
End Function
通報 ...