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' をキャッチし、
カスタムメッセージを表示するようにしています。
他の予期しないエラーが発生した場合は、
そのエラーメッセージが表示されます。
この方法で、
実行時エラーのメッセージをユーザーに表示しないように
制御することができます。
お試しください。
コメント
コメントを投稿