MW211 EXIT

devlog
ExcelVBA/MSSQLのトランザクション処理
2014年08月31日
下記のような流れとなる。
┌──────────────────────────────────────┐
│    Dim データベース As New ADODB.Connection                                │
│    Dim テーブル As New ADODB.Recordset                                     │
│    ────────────────────────────────────│
│    ' トランザクション開始                                                  │
│    データベース.connectionString = (省略)                                  │
│    データベース.Open                                                       │
│    On Error GoTo トランザクション中にエラー発生                            │
│    データベース.BeginTrans                                                 │
│    ────────────────────────────────────│
│    ' テーブル更新                                                          │
│    テーブル.ActiveConnection = データベース                                │
│    テーブル.Source = "テーブル名"                                          │
│    テーブル.CursorType = adOpenKeyset                                      │
│    テーブル.LockType = adLockOptimistic                                    │
│    テーブル.Open                                                           │
│    テーブル.Filter = "[キー]='" & キー                                     │
│    テーブル.Fields("更新項目").Value = 値                                  │
│    テーブル.Update                                                         │
│    テーブル.Close                                                          │
│    ────────────────────────────────────│
│    ' トランザクション完了                                                  │
│    データベース.CommitTrans                                                │
│    データベース.Close                                                      │
│    Set テーブル = Nothing                                                  │
│    Set データベース = Nothing                                              │
│    Exit Sub                                                                │
├──────────────────────────────────────┤
│トランザクション中にエラー発生:                                             │
│    ' ロールバック                                                          │
│    MsgBox "エラー発生!"                                                   │
│    データベース.RollbackTrans                                              │
│    データベース.Close                                                      │
│    Set テーブル = Nothing                                                  │
│    Set データベース = Nothing                                              │
└──────────────────────────────────────┘
自前でトランザクションのSQL文を発行するよりも
用意されているメソッドに従ってやった方がいいようだ。
(SQL文発行だとうまく行かなかった)
分類:ExcelVBA