その頃マンションでは八木くんが、近くのコンビニで買ってきたざるそばを、
ズルズルと食べています。
「トランザクション処理をテストするコードを追加したぞ。
これで実際にエラーを発生させて、動作を確認することができる…」
ざるそばを食べ終えた八木くんは、VBEのコードを再度確認します。
:
CN.BeginTrans
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
sql = "SELECT * FROM 進捗TBL WHERE 番号='" & Cells(i, 1).Value & "'"
rs.Open sql, CN, adOpenKeyset, adLockOptimistic
If rs.BOF = False Then
rs.Fields("案件").Value = Cells(i, 2).Value & "★"
rs.Fields("担当").Value = Cells(i, 3).Value
:
rs.Update
If i = 10 Then Err.Raise 6
End If
rs.Close
Next
CN.CommitTrans
:
Exit Sub
エラー:
CN.RollbackTrans
MsgBox "編集に失敗しました データベースは更新されません"
:
※赤字の部分が、追加したコードです。
「うん。まず、
Cells(i, 2).Value & "★"
で、案件名の末尾に"★"を付けることにする。
正常に終了すると、CN.CommitTransで全てのレコードの更新を確定する。
しかし、10行目の処理を行ったとき、
If i = 10 Then Err.Raise 6
で強制的にエラーを発生させる。
ErrオブジェクトのRaiseメソッドは、指定した番号のエラーを生成できるんだ。
ここでは6の、オーバーフローエラーを発生させることにしよう。
この状態で実行すると…」