Access Tips by pPoy

  
トップへ←Top    QueryへQuery  FormへForm  ReportへReport  Module(Sub)へSub  Module(Function)へFunction  ExcelへExcel  Etc.へEtc.  Word連携へWord

Report データが無い時レポートの印刷を中止する方法 《NoData》 (Ac97,Ac2000,Ac2002)
Access でレポートを印刷する時、全てのデータを印刷するのではなく、
範囲指定して印刷実行したい時があります。

ところがその結果、印刷すべきデータが1件も無いこともあり得ます。
そんな時印刷をキャンセルする方法です。

まず、フォームのコマンドボタンで、フィルタを設定してレポートをプレビューします。
印刷のキャンセルはレポート側で判断します。

これにはレポートの NoData イベントを使用します。
また、NoData イベントでキャンセルされた場合、最初に押したコマンドボタンのイベントが
エラーとなってしまいます。 このエラーはエラー処理ルーチンで分岐して処理します。

以下のコードを、フォームとレポートの2ヶ所に記述してください。
≪1.レポート側≫

以下のコードをレポートの 「空データ時」 イベントに記述してください。 Private Sub Report_NoData(Cancel As Integer) ' 空データ時キャンセル。 2004/01/11 pPoy MsgBox "指定されたデータはありません。" & vbNewLine _ & "レポートを表示できませんでした。", vbOKOnly Cancel = True End Sub
≪2.フォーム側≫

以下のコードをフォームのコマンドボタンの 「クリック時」 イベントに記述してください。 Private Suib cmd_Print_Click() ' レポートを範囲指定してプレビュー ' 2004/01/11 pPoy On Error GoTo Err_cmd_Print_Click Dim stNameR As String Dim sqlName As String stNameR = "R_住所録" 'レポート名 ' フィルタを設定してプレビュー sqlName = "氏名='" & Me![txt氏名] & "'" DoCmd.OpenReport stNameR, acViewPreview, , sqlName Exit_cmd_Print_Click: Exit Sub Err_cmd_Print_Click: If Err.Number = 2501 Then 'NoDataでCancelされた時 Resume Exit_cmd_Print_Click Else 'その他のエラー MsgBox Err.Description Resume Exit_cmd_Print_Click End If End Sub
≪結果≫

上記のコマンドボタンをクリックし、レポートをプレビューしたとき、
該当するデータが一件も無い場合、レポートの NoData イベントが発生します。

レポートは表示されず代わりに、
  「指定されたデータはありません。」
  「レポートを表示できませんでした。」 というメッセージが表示されます。

このメッセージに 「OK」 を押すと、レポートの印刷はキャンセルされます。
同時にコマンドボタンのイベントがキャンセルされたと言うエラーが発生します。
そこでこのエラーのみ、エラーメッセージを表示せずそのまま終了します。

※補足※
エラー処理ルーチンが無い場合、

「実行時エラー'2501';
OpenRpeprt アクションの実行はキャンセルされました。」

というエラーメッセージが表示されてしまいます。
≪注意≫

  • "cmd_Print" は、フォームにあるレポートプレビュー実行用のコマンドボタンです。
  • "R_住所録" は、レポート名です。
  • "txt_氏名" は、フォームにある、レポートの印刷範囲指定用のテキストボックス名です。
  • レポートの NoData イベントを使用せずに、DAO で判断する方法は、こちら です。



【念の為の注意書きです。】
このページ(下位ページ含む)の全ての物の無断転載を禁止いたします。又、当ページ(下位ページ含む)に記載されていることは、全て自己の責任において実行してください。

Copyright(C) pPoy 2004