#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'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved