プロが教える店舗&オフィスのセキュリティ対策術

環境:XP&ACCESS2003
サブレポートがメインレポートのほぼ中央に位置するレポートを作成しています。
サブレポートの下には、メインレポートのデータが数件表示されます。(連結コントロール)
サブレポートの元となるテーブルのデータがゼロ件の時があります。
(受注番号で連結)
サブレポートの元となるテーブルのデータがゼロ件の場合、メインレポートのサブレポート以下のデータがサブレポート分だけ上に表示される方法をご存知の方、教えてください。
よろしくお願いします。

A 回答 (1件)

レポートの詳細でサブレポートの高さを最小にして配置しその下にメインレポートのコントロールを配置し詳細の高さもコントロールを含めた最初の高さに調整すればサブフォームに表示するデータがあればレコード分表示し無ければサブフォームは非表示の状態になると思うのですが・・。

それではダメなのでしょうか。

別の方法
サブフォームを詳細に配置しメインレポートのデータを表示するコントロールをグループフッターを作りそこに配置する。メインレポートの詳細部分フォーマット時にサブレポートで使用しているテーブルをDCountでレコード数を求めて値が0の場合詳細部をFalseとして表示させない。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
If DCount("*", "サブレポートで使用しているテーブル名") = 0 Then
Me.詳細.Visible = False
Else
Me.詳細.Visible = True
End If
End Sub

別の方法としてサブレポートで表示するデータがある時に出力するレポート1と無い場合にサブレポートを除いた同じ内容のレポート2を用意しておきサブレポートの元となるテーブルのレコードが0件の場合と0件でない場合で出力するレポートを変える方法。
フォームのレポートを出力するボタンのイベントに
Private Sub レポート出力ボタン_Click()
Dim stDocName As String
If DCount("*", "サブレポートで使用しているテーブル名") = 0 Then
stDocName = "レポート2"
DoCmd.OpenReport stDocName, acNormal
Else
stDocName = "レポート1"
DoCmd.OpenReport stDocName, acNormal
End If
End Sub
として出力するレポートを変える。
こんな感じでどうでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す