#569 | 削除されようとしているデータ内容を取得するには? | フォーム、VBA | |
Accessのフォームからレコードを削除しようとすると、次のような順番でイベントが発生します。
ところが、通常このようなオリジナルの確認メッセージは「BeforeDelConfirm/削除前確認」イベントプロシージャを利用しますが、その時点ではすでにそのレコードが画面から消えてバッファに格納された状態になっているため、そのレコードのフィールドのデータ内容を取得することができません。 そのようなときに使えるひとつの方法です。 次のサンプルコードでは、まず「Delete/レコード削除時」イベントプロシージャで、削除されようとしているレコードのフィールドの値を取得し、Publicな変数に代入しておきます。そして「BeforeDelConfirm/削除前確認」イベントプロシージャでは、その変数を参照することによってフィールドのデータ内容を含めた確認メッセージを表示しています。 なお、複数のレコードが範囲選択されている可能性もありますので、その場合も考慮したコードとなっています。複数レコードを削除しようとしたときには、Delete/レコード削除時イベントはそれらのレコード1つごとに複数回発生し、他の二つのイベントは1回だけ発生します。 Private pvarDelData As Variant Private Sub Form_AfterDelConfirm(Status As Integer) 'フォームのレコード削除後確認 '次の削除操作に備えてPublic変数を初期化 pvarDelData = Null End Sub Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer) 'フォームのレコード削除前確認 '既定の削除確認メッセージを表示しない Response = acDataErrContinue 'オリジナルの削除確認メッセージを表示する Beep If MsgBox(pvarDelData & "のデータを削除します。よろしいですか?", _ vbYesNo + vbQuestion) = vbNo Then Cancel = True End If End Sub Private Sub Form_Delete(Cancel As Integer) 'フォームのレコード削除時 '削除レコードの得意先名をPublic変数に保存 pvarDelData = pvarDelData & Me!得意先名 & vbCrLf End Sub 実行例: ■一つのレコードを削除する場合 |
|||
|
Copyright © T'sWare All rights reserved |