Microsoft Access 掲示板

正常に処理していても、On Error GoTo でエラーと認識される

2 コメント
views
4 フォロー

UPDATEが失敗した時に、On Error GoTo errTrapで、失敗を知らせるようにしています。
しかし、正常にレコードが更新されていても、errTrap:に飛んでしまします。
[ツール] - [オプション] - [全般]では、[エラー処理対象外のエラーで中断]を選択しています。
なにが、原因なのでしょうか?

    yname = Environ("UserProfile") 'ユーザー名を取得

    strFileName = "ホゲホゲ.accdb" 'データベースのファイル名
    Set adoCn = CreateObject("ADODB.Connection") 'ADODBコネクションオブジェクトを作成
    adoCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & yname & "\Desktop\VBA\ホゲ\ホゲー\" & strFileName & ";" 'Accessファイルに接続

     jn = "1234567891123"
     ct = -60
     dat = "2024/10/7"

     On Error GoTo errTrap
     strSQL = "UPDATE シフト SET ID" & jn & "変更 = " & ct & " WHERE 年月日 = #" & dat & "#;"
     adoCn.Execute strSQL '正常にレコードが更新されている
    End With

errTrap:
    Debug.Print strSQL
    MsgBox Err.Number & ": " & Err.Description
    Exit Sub

タークン
作成: 2024/10/30 (水) 12:17:22
通報 ...
1
ssassakki 2024/10/31 (木) 10:34:27 27741@c61b7

回答し辛い質問ですが・・・
プログラムは上から下に順番に実行されていきますので、
正常にレコードが更新されてからerrTrap:に飛んでいるのではなく、
更新後にerrTrap:移行の処理が順番に実行されています。

試してませんが、errTrap:の前でexit sub(function)で処理を抜けるようにすればいいはずです。

2
タークン 2024/10/31 (木) 16:15:35 7aa2b@2705a

言われてみれば、exit sub(function)がなければ終了していないので、
下部のerrTrapの処理が行われてしまいますね。

変数を多用するケースではないので、
いちいちfunctionに飛ばすのも面倒だと思って飛ばさないようにしていたのですが、
途中で終了させるわけにはいかないので、
目障りではありますが、飛ばして処理する事に致します。
ありがとうございました。