トランザクション処理を行う
Sub トランザクション1() Dim myCon As ADODB.Connection, myCmd As ADODB.Command Dim myFile As String, myCmdTxt1 As String, myCmdTxt2 As String myFile = ThisWorkbook.Path & "\mdb\4-sampleDB.mdb" Set myCon = New ADODB.Connection myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & myFile Set myCmd = New ADODB.Command myCmd.ActiveConnection = myCon '2つの処理をまとめてトランザクション処理を行う myCmdTxt1 = "UPDATE アルバイト SET 手当 = 手当 + 5000;" myCmdTxt2 = "UPDATE 勤務履歴 SET 労働時間 = 0;" On Error GoTo Trans_Err 'エラートラップ myCon.BeginTrans '<--*トランザクション処理スタート myCmd.CommandText = myCmdTxt1 myCmd.Execute '<--1つ目の処理を実行 myCmd.CommandText = myCmdTxt2 myCmd.Execute '<--2つ目の処理を実行 myCon.CommitTrans '<--ここで、変更をまとめて書き込む Set myCmd = Nothing myCon.Close: Set myCon = Nothing Exit Sub Trans_Err: 'エラー時の処理 MsgBox "エラーが発生しました。変更を破棄して終了します。" '変更を破棄し、トランザクション処理前の状態に戻す myCon.RollbackTrans Set myCmd = Nothing myCon.Close: Set myCon = Nothing End Sub
トランザクション処理とは、データベースのデータおよび構造に対して行われる一連の変更を一括して行う処理のこと。
大量のデータを処理する場合には、データベースにアクセスする回数が減るため、一般の変更・更新処理と比較すると、高速で安全に作業できる。
BeginTransメソッド以降にデータベースに対して行った処理は、データベース側には、反映されず、まずメモリ内で処理される。
全ての処理を行った所でCommitTransメソッドを使用して、変更をデータベースに一括反映する。
トランザクション処理中に何らかのエラーが起きて変更を破棄したい場合は、RollbackTransメソッドを使用する。
これにより、全ての変更が破棄される。
メソッド | 内容 |
---|---|
BeginTrans | トランザクション処理を開始する |
CommitTrans | BeginTrans記述後の変更処理を反映し、トランザクション処理を終了する |
RollbackTrans | BeginTrans記述後の変更処理をすべて破棄し、トランザクション処理を終了する |
実行結果
「アルバイト」テーブル
↓
「職務履歴」テーブル
↓