Accessむかむか ホーム >> TIPS一覧 >> TIPS

項目

 トランザクション処理(ADO)

概要

 トランザクション処理はデータの整合性を守るために実行します。
 トランザクション処理は、ADOでは「BeginTrans/CommitTrans/RollbackTrans」で行います。


 【例】データを10件追加しようとして3件目でエラーでが起きた場合に、BeginTransで実行していた場合には、
 エラー発生時にRollbackTransを行う事でDML操作を取消事ができる。
 BeginTransで実行していなかった場合には、データが2件登録されてしまいデータの整合性を保つ事ができない。

方法

Option Compare Database
Option Explicit

'++++++++++++++++++++++++++++++++++++++++++++
'トランザクション処理
'++++++++++++++++++++++++++++++++++++++++++++
Private Sub コマンド0_Click()
On Error GoTo err_handle

    Dim cnn As ADODB.Connection

    Set cnn = CurrentProject.Connection

    '■トランザクション開始
    cnn.BeginTrans

    '〜DML操作(INSERT,DELETE,UPDATE)の実行 START〜
    Dim rs As New ADODB.Recordset
    
    rs.Open "select * from tbl_Hoge", cnn, adOpenDynamic, adLockOptimistic

  rs.AddNew
    rs.Fields("hoge") = 1
    rs.Fields("hogehoge") = "hogehoge"
    rs.Update

    '〜DML操作(INSERT,DELETE,UPDATE)の実行 END〜

    '■コミット(DML操作確定、トランザクション終了)
    cnn.CommitTrans

'●後処理
exit_handle:

    If rs.State = adStateOpen Then rs.Close
    If cnn.State = adStateOpen Then cnn.Close

    Exit Sub

'●エラー時の処理
err_handle:

    '■ロールバック(DML操作取消、トランザクション終了)
    cnn.RollbackTrans

    MsgBox Err.Description

    Resume exit_handle

End Sub
Copyright (C) Accessむかむか