HOME > 即効テクニック > AccessVBA > データベース・データ保護 > レコード削除操作の結果を取得する

即効テクニック

データベース・データ保護

レコード削除操作の結果を取得する

(Access 2000/2002/2003)
●概要●
[Delete]キーを押すなどしてレコード削除の操作をしたとき、削除確認のメッセージダイアログが表示され、レコードが実際に削除された直後に発生します。このイベントは、削除をキャンセルした場合にも発生します。イベントプロシージャは、AfterDelConfirm/削除後確認プロパティに設定します。
AfterDelConfirmイベントプロシージャの引数に代入された値から、レコードが削除されたかどうかを取得することができます。acDeleteOkの場合、正常に削除されています。acDeleteCancelの場合、コードによって削除がキャンセルされています。acDeleteUserCancelの場合、ユーザーが削除をキャンセルしています。
次のコードは、削除操作の結果を表示するものです。

●サンプル●
Sub PrintDialogueSample()
    'エラーの場合、myErr: へ
    On Error GoTo myErr
    'レポート[名簿]を選択する
    DoCmd.SelectObject acReport, "名簿", True 
    '印刷ダイアログボックスを開く
    DoCmd.RunCommand acCmdPrint
    'プロシージャを終了
    Exit Sub
myErr:
    'エラーメッセージを出す
    MsgBox Err.Description
End Sub

Private Sub Form_AfterDelConfirm(Status As Integer)
    Select Case Status
        Case acDeleteOK
            MsgBox "レコードが削除されました"
        Case acDeleteCancel
            MsgBox "コードでキャンセルされました"
        Case acDeleteUserCancel
            MsgBox "ユーザーがキャンセルしました"
    End Select
End Sub

BeforeDelConfirmイベントが発生したときに、カスタムのメッセージダイアログを表示して、削除確認をしている点に注目してください。このメッセージダイアログで「いいえ」がクリックされたときに、コードで削除がキャンセルされたことになります。

●補足●
Deleteイベントをキャンセルすると、AfterDelConfirmイベントは発生しませんが、BeforeDelConfirmイベントをキャンセルした場合には、AfterDelConfirmイベントは発生します。