| 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 で判断する方法は、こちら です。
|