Access実践入門 TOPへ
 ■ マイクロソフトアクセス、レポートのレコードソースにデータが無い場合
レポートを印刷したら、空のデータで印刷されてしまった

レポートに印刷で、条件を指定して印刷したら、該当データが無くて、表題だけが印刷されてしまう場合があります。
サンプルプログラムでは、プレビュー画面を見せてから、印刷して貰うようになっているので、空データのまま、実際に印刷してしまうことは無いと思いますが、印刷してしまっては紙がもったいないので、その処理について、考えてみます。

参加者の登録で、一覧表の印刷指定でその処理をしています


レポートの「空データ時」を使う

「一覧表」のクリック時に次のようなプロシージャを書いています

DoCmd.RunMacro "ma印刷.参加者一覧印刷"

下のマクロの「参加者一覧印刷」を呼び出しています


次に、レポートの「re参加者一覧」のプロパティの「空データ時」を見てください

上記マクロの「空処理」を呼び出しています
メッセージを表示した後、イベントのキャンセルをしています。

これの流れで、空のレポートが開くことを止められます。

レポートを開く前に、レコード数を調べて中止する

「ラベル」のクリック時に次のようなプロシージャを書いています

If DCount("*", "qu印刷参加者一覧") = 0 Then
MsgBox ("印刷するデータがありません")
Else
DoCmd.OpenReport "re参加者dm", acViewPreview
End If

レポート「re参加者dm」のレコードソースの「qu印刷参加者一覧」のレコード数を調べて、
レコードが無かったら、メッセージを出して、レコードが有れば、レポートを開くようにしています。

こちらの処理はマクロを使わないで処理できます。

次のようにすると、エラーになります
DoCmd.OpenReport "re参加者dm", acViewPreview
で、レポートを呼び出して、そのレポートの中で、「空データ時」にキャンセルイベントを書くと、
「イベントがキャンセルされました」というようなエラーが出て、止まってしまいます。
プロシージャでレポートを開いた場合は、キャンセルイベントは使えないみたいです。