Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
サブレポートのデータが無い場合、白紙を非表示にしたい
投稿日時: 25/04/30 20:24:44
投稿者: TK0428

<ACCESSのサブレポート印刷時白紙非表示について>
 
親レポートに関連性のないサブレポートを3つ埋め込んでおり、3つのサブレポートは一つのレポートとしてプレビュー、印刷するよう設定しています。
また、各サブレポートの間には改ページを挿入しています。
 
各3つのサブレポートのデータが無い場合、白紙が表示されてしまうのですが、データが無い場合は白紙を表示しないようにしたいです。
 
【現状】
「サブレポートA」+「サブレポートB」+「サブレポートC」で一つのレポートとして表示するよう設定
 
「サブレポートA」データなし
1ページ目に白紙が表示
 
「サブレポートB」データあり
→2ページ目にデータが表示
 
「サブレポートC」データあり
→「サブレポート2」のページ数にもよりますが、3ページ以降に表示
 
1ページ目の白紙を非表示にし「サブレポートB」を1ページ目に表示、
「サブレポートB」「サブレポートC」のデータが無い場合も同様の設定をしたいです。
 
ご教示いただけますと幸いです。
宜しくお願いいたします。

回答
投稿日時: 25/05/01 09:47:31
投稿者: hatena
投稿者のウェブサイトに移動

引用:
また、各サブレポートの間には改ページを挿入しています。

 
「改ページ」コントロールがあるのでサブレポートにデータがなくても白紙が出力されます。
 
メインレポートの開くときのイベントで、
DCount関数を使ってサブレポートのデータ件数を取得して、件数0のとき、「改ページ」コントロールを非表示にするようにすればどうでしょう。
 
Private Sub Report_Open(Cancel As Integer)

    If DCount("*", "サブレポート1のクエリ")=0 Then Me.改ページ1.Visible = False 

    If DCount("*", "サブレポート2のクエリ")=0 Then Me.改ページ2.Visible = False 

    If DCount("*", "サブレポート3のクエリ")=0 Then Me.改ページ2.Visible = False 

End Sub

投稿日時: 25/05/01 23:15:43
投稿者: TK0428

hatena様
 
早速のご回答ありがとうございます。
 
教えてくださった通りにコードを記述したところ、思い通りの結果となりました。
 
DCount関数を使用して「改ページ」を非表示設定にする考え方は目から鱗でした。
 
とても助かりましたし、大変勉強になりました。
ありがとうございました!