Accessのレポートでデータがない場合印刷を中止する方法

Accessのレポートはデータがなくても、タイトルがあるページヘッダーや項目名があるページヘッダーなどが印刷されてしまいます。

それではアプリケーションとしては不親切なので、レコードがない場合はメッセージを表示し印刷を中止するようにします。

BackHome Backレポート


■パラメータクエリがレコードソースのレポートを作成する

下のような、人口がパラメータのクエリを作成しました。
パラメータは、<=[何人以下?] にしています。
これで都道府県の人口から、指定した人口以下のレコードが表示されます。
人口がパラメータのクエリを作成

レポートを作成し、レコードソースに上のパラメータクエリを設定しました。
レポートを作成し、レコードソースにパラメータクエリを設定

レポートビューで開くと「何人以下?」とメッセージが表示されるので、指定する人口を入力します。
指定する人口を入力する

該当するレコードがある場合、下のように印刷プレビューが表示されます。
レコードがある場合の印刷プレビュー

次にレコードがない場合にするため、人口が1000人以下の都道府県で抽出します。
人口が1000人以下の都道府県で抽出する

レポートビューを実行すると、下のようにレコードがないので項目名とフィールドの枠が印刷されました。
これでは印刷が無駄なのと、何回も繰り返しパラメータを変更しテストするようなことが大変になります。
レコードがないので項目名とフィールドの枠が印刷

■データがない場合、印刷を中止させる

レポート デザインビューでプロパティシートを開きます。
イベントタブの「空データ時」で[イベントプロシージャ]を選択します。
「空データ時」で[イベントプロシージャ]を選択する

Report_NoDataが開くので、メッセージとキャンセルするVBAを入力します。
メッセージとキャンセルするVBAを入力

・Report_NoDataの引数のCancelをTrueにすることで印刷を中止できます。

Private Sub Report_NoData(Cancel As Integer)
    MsgBox "データがありません!"
    Cancel = True
End Sub

実行すると「データがありません!」とメッセージが表示され、印刷はされません。
「データがありません!」とメッセージが表示


BackHome Backレポート

Copyright(C) FeedSoft