HOME > 即効テクニック > AccessVBA > ユーザーインターフェース > レコード削除確認をカスタムダイアログで行う

即効テクニック

ユーザーインターフェース

レコード削除確認をカスタムダイアログで行う

(Access 2000/2002/2003)
● 概要 ●
[Delete]キーを押すなどしてレコード削除の操作をしたとき、レコードが削除されたあと、既定の削除確認のメッセージダイアログが表示される前に発生します。
イベントプロシージャは、BeforeDelConfirm/削除前確認プロパティに設定します。
BeforeDelConfirmイベントプロシージャの引数にTureを設定すると、BeforeDelConfirmイベントをキャンセルすることができます。
その結果、フォームから削除されてバッファに一時保存されていたレコードが復元します。
また、引数にfalseを設定すると、既定の削除確認のメッセージダイアログを表示しないようにできます。
次のコードは、カスタムメッセージダイアログを表示して削除確認を行い、「いいえ」ボタンがクリックされたらイベントをキャンセルするものです。
その結果、一時的に削除されていたレコードは復元します。


● サンプル ●
'レコード削除確認をカスタムダイアログで行う
Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
    Dim myMes As String
    Dim myRes As Integer
     '既定のメッセージを表示しない
    Response = False 
    myMes = "社員データを削除しますか"
     '削除を確認する
    myRes = MsgBox(myMes, vbYesNo) 
    If myRes = vbNo Then
         'イベントをキャンセルする
        Cancel = True 
    End If
End Sub


● 補足 ●
レコードを削除する操作をすると、まず1つ1つのレコードに対してDeleteイベントが発生します。
次に、レコードが削除され、バッファに移動したあと、BeforeDelConfirmイベントが発生します。
さらにそのあと、削除確認のメッセージダイアログが表示されます。それぞれのイベントをキャンセルすると、次の過程には進みません。