トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 持続可能なスキーム編: 第10話「ADOでトランザクションを管理する」2/4 :トランザクションの処理を追加

やってみよう!Excel VBAで業務改善! 持続可能なスキーム編|第10話 「ADOでトランザクションを管理する」

トランザクションの処理を追加

その頃マンションでは八木くんが、新しいコードを追加した
「データ編集」プロシージャを、身じろぎもせず見つめています。


Sub データ編集()
    Dim rs As New ADODB.Recordset
    Dim sql As String
    Dim i As Long
    
    On Error GoTo エラー
    
    If DB接続 Then
        CN.BeginTrans
        
        For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            :
            :
        Next
        
        CN.CommitTrans
        MsgBox "データを編集しました"
        Call データ取得
    End If
    
    Exit Sub
    
エラー:
    CN.RollbackTrans
    MsgBox "編集に失敗しました データベースは更新されません"
    Call データ取得
End Sub

※赤字の部分が、追加したコードです。

「よし!トランザクションの処理を追加したぞ。
まず、"CN.BeginTrans"でトランザクションの処理を開始する。
ADOでトランザクションを管理するには、Connectionオブジェクト…
ここでは変数CNに対して、トランザクションのメソッドを使うんだ」

八木くんが、ブツブツとひとり言をつぶやきます。

「問題なくテーブルが更新されれば、"CN.CommitTrans"でテーブルに対する変更を確定する。
逆に、何らかの理由で更新に失敗したときは、行ラベル"エラー:"に処理が移り、
"CN.RollbackTrans"でテーブルへの変更を取り消して、元に戻す」

一覧にもどる