#579 複数レコード削除時にレコードごとに確認メッセージを出す方法 フォーム、VBA

フォームにおいて、下図のように複数のレコードを範囲選択してレコードを削除しようとしたとします。
複数のレコードを範囲選択

このとき、フォームの「BeforeDelConfirm/レコード削除前確認」イベントプロシージャが次のようになっていたとすると、この確認メッセージは”一度”表示されただけで全選択レコードの削除が実行されます。

Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
'レコード削除前確認

  MsgBox "レコードを削除します!"

End Sub


オリジナルの確認メッセージ

Access既定の確認メッセージ


これに対して、「Delete/レコード削除時」イベントの発生時点でチェックをかけると、選択レコード一括ではなく、それらの1レコードごとに対して確認メッセージを表示させることができます。またその際、1レコードごとのコントロールあるいはフィールドの値を取得してその内容を確認メッセージ文に含めたりすることもできます。

このイベントは、複数のレコードが範囲選択されて削除されようとした場合でも1レコードごとに発生します。そして、ここで削除がキャンセルされなかったレコードだけが次のイベントとしてBeforeDelConfirmに渡されます。

Private Sub Form_Delete(Cancel As Integer)
'レコード削除時

  '削除確認メッセージを表示
  If MsgBox(Me!商品名 & "を削除してよいですか?", _
            vbYesNo + vbQuestion) = vbNo Then
    '[いいえ]が選択されたら削除をキャンセル
    Cancel = True
  End If

End Sub


実行例:
複数のレコードを範囲選択

1レコード目の確認メッセージ

2レコード目の確認メッセージ
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved