Accessのレポートで印刷を実行しようとしても、該当するデータがない場合があります。
印刷プレビューで確認すれば、印刷を実行せずに済むかもしれませんが、印刷するレコードがない場合はメッセージで表示すると分かりやすくなります。
レポートのプロパティには、[空データ時]というイベントがあります。
印刷対象のレコードがない場合の処理を割り当てることができるイベントです。
マクロアクションでメッセージを表示して、データがないことを伝えることができます。
参考ここでのウィンドウの表示は[タブ付きドキュメント](既定)の設定にしています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
フォームのコンボボックスの値でレコードを抽出して印刷
フォームにコンボボックスを設置して、リストから値を選択し、[印刷]ボタンをクリックして印刷プレビューを表示するように作成しています。
コンボボックスの設定
以下は、フォームのデザインビューでコンボボックスのプロパティを表示しています。
コンボボックスの名前は[コンボ1]です。
プロパティの[データ]タブを見ると、テーブル[T_得意先]の値をリストに表示するようにしているのが分かります。
[連結列]は1です。コンボボックスに表示されるのは2列目の[得意先名]ですが、コンボボックスの値として格納されるのは、主キーの[得意先ID]となります。
[列数]は2ですが、[列幅]で1列目は非表示にしています。
参考コンボボックスの作成については、以下の記事を参照してください。
-
フォームのコンボボックスの値でレコードを抽出
Accessの分割フォームのデータシートビューには、Excelのフィルターと同じようにフィルターボタンがあり、Excelの操作と同じように様 ...
コンボボックスの[入力チェック]については、以下の記事で解説しています。
-
コンボボックスにリスト以外の値が入力されないようにするには
テーブルやフォームでコンボボックスのリストから値を選択して入力するようにしていても、プロパティの[入力チェック]を[いいえ]に設定していると ...
コンボボックスにカーソルが移動すると、すぐにリストを表示するように設定することもできます。
-
コンボボックス内にカーソルが移動すると自動でリストを表示するには
Accessの入力フォームでコンボボックスを使うことは多いと思います。 コンボボックスって、▼ボタンを押してリストを表示しますが、コンボボッ ...
クエリの抽出条件
クエリ[Q_売上]の[抽出条件]には、以下のように入力しています。
フォームのコンボボックスに格納されているのは[得意先ID]なので、[得意先ID]の抽出条件に入力します。
これで、フォーム[F_レポート印刷]のコンボボックスの値で抽出ができます。
レポート[R_売上]のレコードソースはクエリ[Q_売上]です。
参考クエリでフォームのテキストボックスの値でレコードを抽出する方法は、以下の記事で詳しく解説しています。
-
クエリの抽出条件にテキストボックスの値を設定してレコードを抽出
Accessのクエリでレコードを抽出する方法です。 クエリの抽出条件には、フォームのテキストボックスの値を指定することができます。 また、ク ...
レポートの作成は、以下の記事で解説しています。
-
レポートウィザードを使って表形式のレポートを作成
Accessのテーブルやクエリを基にレポートウィザードを使用してレポートを作成することができます。 ウィザードで作成した後、より見やすいレポ ...
[印刷]ボタンのマクロアクション
[印刷]ボタンのクリック時イベントには、マクロアクションで、コンボボックスが空であればメッセージを表示して、そうでなければレポート[R_売上]を開くようにしています。
レポート[R_売上]は、印刷プレビューで表示するようにしています。
抽出データがない場合
フォーム[F_レポート印刷]で印刷を実行してみます。
データがあれば、コンボボックスの値で抽出されたレコードが印刷プレビューで表示されます。
しかし、データがない場合は、以下のようにレポートヘッダーやページヘッダーだけが表示されます。
この表示より、メッセージでデータがないことを表示したほうが分かりやすいですね。
レポートの[空データ時]イベントでマクロアクションを設定
レポートのプロパティには、[空データ時]というイベントがあります。
データが存在しないレポートが印刷される直前に発生するイベントです。
レポートプロパティを表示します。レポートの左上の■をクリックすると、レポートプロパティが表示されます。
[イベント]タブの[空データ時]の[ビルダー選択]ボタン[…]をクリックします。
[ビルダーの選択]ダイアログボックスから[マクロビルダー]を選択して[OK]ボタンをクリックします。
マクロウィンドウが表示されます。
[新しいアクションの追加]の▼ボタンをクリックして、マクロアクションの一覧から[メッセージボックス]を選択します。
一番下までスクロールすると探しやすくなると思います。
[アクションカタログ]から選択してマクロウィンドウへ追加する方法もあります。
[メッセージ]のテキストボックスに表示したいメッセージを入力します。
[警告音]は、[はい]、[いいえ]のどちらかを選択します。
[メッセージの種類]は、5つのリストの中から選択します。
メッセージの種類は、以下のような表示になります。
メッセージのタイトルは、任意の文字を入力します。空白にした場合は、[Microsoft Access]と表示されます。
Accessのオプションでアプリケーションタイトルを入力している場合は、そのタイトルが表示されます。
ここでは、以下のように設定します。
[新しいアクションの追加]の▼ボタンをクリックして、マクロアクションの一覧から[イベントの取り消し]を選択します。
印刷をキャンセルするためです。
[イベントの取り消し]がないと、メッセージボックスが非表示になった後、印刷プレビューが表示されてしまいます。
マクロアクションの設定が終わったら、上書き保存して、マクロウィンドウを閉じます。
フォームで動作を確認します。[データがありません。]のメッセージウィンドウが表示されます。
メッセージウィンドウの[メッセージタイトル]と、[メッセージの種類]は以下の位置に表示されます。
参考コードビルダーで設定することもできます。Microsoftの記事をリンクしておきます。
レコードが含まれないレポートの印刷をキャンセルする - Microsoft サポート(Microsoft)
フォームでは、Dcount関数でテーブル/クエリのレコード数を確認してメッセージを表示できます。
-
テーブル/クエリにレコードが1件もない時にメッセージを表示する
Accessのテーブル/クエリでレコードが1件もない時、そのテーブルを基にして作成したフォームを開こうとする場合は、[データがありません]と ...