ms access vba フォーム レコード消去ボタン DoCmd.RunCommand acCmdDeleteRecord 01


ms accessでテーブルとそれに対応するフォームを作成し、

フォーム内にレコード消去用のボタンを追加し、

イベントリスナに次のようなコードを記述しました。


Private Sub CmdDeleteBtn_Click()



    If Me.Is_Active = True Then

    

        MsgBox "You cannot delete ACTIVE Customer.", 

vbInformation, "BadChoice"

        

        Exit Sub

        

    Else

        

        If MsgBox("Are you sure You want to delete This customer? ",

vbQustion + vbYesNo, "Delete") = vbYes Then

                

            Me.AllowAdditions = True

                

            DoCmd.RunCommand acCmdDeleteRecord

                

            Me.AllowAdditions = False

            

        Else

            MsgBox "Operation Aborted", vbInformation, "Info"

                

            Exit Sub

        End If

        

    End If

    

End Sub



フォームを開いてレコードの一つを表示し、

deleteボタンを押下したあと、


はいをクリック,

そのあと、access側のものと思われるダイアログが表示されて

削除の確認を求められたのですが、


ここでいいえを選択すると、


実行時エラー '2501'


RunCommand アクションの実行は取り消されました。


というメッセージが表示されるのですが、


これは正常な動作の範囲内でしょうか?


正常な範囲内、というのであれば、

javaでいう、例外処理を記述すれば、


この実行時エラーのメッセージを

表示しないようにできるのでしょうか?



この実行時エラー '2501' は、

実行される予定だった `RunCommand` アクションが

取り消された際に発生する一般的なエラーです。


具体的には、ユーザーが削除の確認ダイアログで

「いいえ」を選択したためにアクションが取り消され、

結果的にこのエラーが発生しています。


このエラーをキャッチし、

エラーメッセージが表示されないようにするためには、

例外処理(エラーハンドリング)をコードに追加することができます。

次のようにエラーハンドリングを追加することで、

エラーが発生した際の動作を制御することができます。


```vba


Private Sub CmdDeleteBtn_Click()


    On Error GoTo ErrorHandler


    If Me.Is_Active = True Then

    

        MsgBox "You cannot delete ACTIVE Customer.", 

vbInformation, "BadChoice"

        

        Exit Sub

        

    Else

        

        If MsgBox("Are you sure You want to delete This customer? ", 

vbQuestion + vbYesNo, "Delete") = vbYes Then

                

            Me.AllowAdditions = True

                

            DoCmd.RunCommand acCmdDeleteRecord

                

            Me.AllowAdditions = False

            

        Else

            MsgBox "Operation Aborted", vbInformation, "Info"

                

            Exit Sub

        End If

        

    End If


    Exit Sub


ErrorHandler:


    If Err.Number = 2501 Then

        MsgBox "The delete operation was canceled.", 

vbInformation, "Info"

    Else

        MsgBox "An unexpected error occurred: " & Err.Description,

vbCritical, "Error"

    End If


End Sub


```


このコードは、削除操作がキャンセルされた場合に

エラー '2501' をキャッチし、

カスタムメッセージを表示するようにしています。


他の予期しないエラーが発生した場合は、

そのエラーメッセージが表示されます。


この方法で、

実行時エラーのメッセージをユーザーに表示しないように

制御することができます。


お試しください。





コメント