オデッセイの運営サイト一覧

Excel®️、Accessのマクロ・VBAのスキルを評価する資格VBAエキスパート

企業・教育機関の皆さまへ 試験会場を探す お問い合せ

やってみよう!Excel VBAで業務改善!|持続可能なスキーム編

第11話「RollbackTransをテストしよう」

第11話「RollbackTransをテストしよう」

登場人物紹介

エラーを発生させてみる

その頃マンションでは八木くんが、近くのコンビニで買ってきたざるそばを、
ズルズルと食べています。

「トランザクション処理をテストするコードを追加したぞ。
これで実際にエラーを発生させて、動作を確認することができる…」

ざるそばを食べ終えた八木くんは、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の、オーバーフローエラーを発生させることにしよう。
この状態で実行すると…」

一覧へ戻る

MENU