#592 削除されようとしているレコード数を取得するには? フォーム、VBA

Accessのフォームでは、複数のレコードを範囲選択してDeleteキーを押したとき、次のように削除確認メッセージが表示されるとともに、そのメッセージには範囲選択されたレコード数も表示されます。
Access既定の削除確認メッセージ

ここでは、削除されようとしているレコード数を取得し、その件数も含むオリジナルの削除確認メッセージを表示させる例を紹介します。

それには、フォームのモジュールに次のようなプログラムを記述します。

Private plngDelSelCnt As Variant


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

  '既定の削除確認メッセージを表示しない
  Response = acDataErrContinue

  'オリジナルの削除確認メッセージを表示する
  Beep
  If MsgBox(plngDelSelCnt & " 件のレコードを削除します。" & vbCrLf & _
            "これらのレコードを削除してよろしいですか?", _
            vbYesNo + vbQuestion) = vbNo Then
    Cancel = True
  End If

End Sub

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

  '選択されたレコード数をPublic変数に保存
  plngDelSelCnt = Me.SelHeight

End Sub


実行例:
実行例


ここでは次のような点がポイントとなっています。
  • フォームで範囲選択されているレコード数を取得するには、フォームの「SelHeight」プロパティの値を調べる。

  • 「削除前確認/BeforeDelConfirm」イベントが発生する時点では、選択レコードはすべて仮削除されたような状態になっているため、「SelHeight」プロパティは常に「0」となってしまう。そこで、事前に「レコード削除時/Delete」イベントにおいてそのプロパティの値を取得する。

  • 取得したプロパティの値は他のイベントプロシージャで利用するので、DeclarationsセクションにPubulicな変数(ここでは「plngDelSelCnt」)を宣言しておきそこに代入する。

  • 「削除前確認/BeforeDelConfirm」イベントプロシージャではPubulic変数を参照して選択レコード数をメッセージ表示に含める。


関連Tips:「#569 削除されようとしているデータ内容を取得するには?」
| Index | Prev | Next |



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