HOME > 即効テクニック > AccessVBA > データベース・データ保護 > レコード削除の確認を1レコードずつ行う

即効テクニック

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

レコード削除の確認を1レコードずつ行う

(Access 2000/2002/2003)
●概要●
[Delete]キーを押すなどしてレコード削除の操作をしたとき、レコードが実際に削除される直前に発生します。イベントプロシージャは、OnDelete/レコード削除時プロパティに設定します。
フォームで複数のレコードを選択して「Delete」キーを押すと、通常、すべてのレコードまとめて削除確認する既定のメッセージダイアログが表示されます。

複数のレコードをまとめて削除する場合でも、Deleteイベントはレコードごとに発生します。そこで、Deleteイベントを利用すれば、1レコードずつ削除確認のメッセージダイアログを表示することができます。Deleteイベントプロシージャの引数にTureを設定すると、Delteイベントをキャンセルすることができます。
次のコードは、レコードを削除するかどうかを1レコードずつ確認するものです。メッセージダイアログで[いいえ]ボタンがクリックされた場合、イベントをキャンセルします。その結果、レコードは削除されません。

●サンプル●
'レコード削除の確認を1レコードずつ行う
Private Sub Form_Delete(Cancel As Integer)
    Dim myMes As String
    Dim myRes As Integer
    '社員番号を表示して削除確認をする
    myMes = "社員NO " & Me!社員NO & " のレコードを削除しますか"
     '削除を確認する
    myRes = MsgBox(myMes, vbYesNo)
    If myRes = vbNo Then
         'イベントをキャンセルする
        Cancel = True                          
    End If
End Sub

●補足●
Deleteイベントプロシージャで削除確認を行ってレコードを削除することになった場合、再度システムから既定の削除確認のメッセージダイアログが表示されます。この既定のメッセージダイアログを表示しないようにするには、BeforeDelConfirmイベントを利用します。