• ベストアンサー

メイン/サブレポートのコントロール表示について

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

  • idek
  • お礼率47% (170/361)

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.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 として出力するレポートを変える。 こんな感じでどうでしょうか。

関連するQ&A

  • アクセスでサブレポートにデータが表示されない?

    アクセスでサブレポートにデータが表示されない? MSアクセス(2010)で、レポートAに レポートBを貼り付けました。 (レポートBはレポートAの サブレポートのつもりです) 元のレポートBには、Tableデータが 表示されているのですが、 レポートAに張り付けた、サブレポートB上には、 Tableデータが表示されません。 表示させるための手順等、ご教示ください。

  • 複数のサブレポートの金額をメインレポートに合計する

    8月~7月の金額が表示されている3つのサブレポートを作成しています。 このサブレポートのレコードソースはクロス集計クエリで集計しています。 3つのサブレポートの[詳細]欄の各月の合計金額をメインレポートに表示したいのですが#NAME?エラーになります。 [サブレポート1]  [8月] 10,000  [9月] 12,000  [10月] 空白 [サブレポート2]  [8月] 13,000  [9月] 14,000  [10月] 15,000 [サブレポート3]  [8月] 16,000  [9月] 空白   [10月] 17,000 メインレポートの「詳細」に非連結のテキストボックスを作成し、コントロールソースを =Reports![サブレポート1]![8月]+Reports![サブレポート2]![8月]+Reports![サブレポート3]![8月] としています。 お手数ですが、どなたかご教授いただけないでしょうか?

  • Accessサブレポートの内容が重複して表示される

    いつもお世話になってます。 現在、Access 97で注文書の作成機能を作っています。 注文書の元になる宛先などのテーブル(仮に「注文書」とします)と、注文するものの明細データは別テーブル(「明細」とします)で管理し、「注文書」テーブルの「ID」をオートナンバー型として、 「明細」テーブルに紐付けをしています。 このデータを元にレポートを作っており、レポート「注文書」の「詳細」部分に、サブレポート「明細」を入れました。 リンクの親フィールド、子フィールドは共に「ID」です。 これを実際に印刷プレビューしてみると、明細の内容は注文書「ID」に紐付けられた内容がしっかり表示されるのですが、 サブレポート「明細」の内容が2回繰り返して表示されてしまいます。 サブレポートには、ヘッダに「下記の通り注文いたします。」などと入れて、詳細部分に明細が表示されるようにしています。 こういったヘッダや明細が、メインレポートで表示すると、同じ内容が2度出力されてしまうのです。 (2重に見えるわけではなく、明細の出力が終わったあと改めて同じ内容が表示されます。サンプルの画像を表示します。商品番号は[ID]とは別で採番しているものです。) メインレポートへのサブレポートの埋め込みは1つだけです。 どなたか原因がわかる方がいらっしゃればご教授いただきたく思います。 よろしくお願いいたします。

  • Accessメインレポート非表示

    Access初心者です。 サブレポートにリンクされたメインレポートがあります。 サブレポートに表示するレコードが無い場合は、メインレポートのレコードも非表示にし、印刷対象外にしたいのですが、可能なのでしょか? 方法があれば教えて下さい。 よろしくお願い致します。

  • Access2003で、メイン情報を持つレポート中の複数サブレポートで

    Access2003で、メイン情報を持つレポート中の複数サブレポートで印刷位置がずれてしまいます。 お世話になります。 メインレポートの中に5つのサブレポートを出力しますが、サブレポートにデータが取得されない場合は空間ができてしまうし、データがたくさんある場合は下向きに拡張します。 そこで、各サブレポートの最大予想レコード数をもとに、1ページの罫線枠の中に収まるようにレイアウトしました。 でも、ページの一番下に印刷される注意書きのテキストボックス部分も上下するので、外枠罫線との間隔がサブレポートのレコード数によって違ってきます。 このテキストボックスを外枠罫線の5ミリ下等、印刷場所を固定することはできますでしょうか。 可能ならその方法を教えてください。よろしくお願いいたします。

  • Accessのメインレポートとサブレポート

    Accessでメインレポートとサブレポートがあるレポートを作っています。 メインレポートのページが変わるたびに、サブレポートのレコードソースを変更して、サブレポートの再表示をさせたいのですが、どうやればいいのでしょうか? ちなみにメインのほうで以下のように記述しましたが、 (3)でエラーになります。 (エラー内容:記述ミス、または開いていない) Private Sub Report_Page() (1) Dim strSQL As String (2) strSQL = "SELECT * FROM Meisai" _ & " WHERE DenNo = " _ & Format(Reports!r日報!DenNo.Value, "000000") (3) Reports!r明細!.RecordSource = strSQL End Sub

  • ACCESS サブレポートの参照について

    ACCESS2003を使用しています。 メインレポートのページフッターにテキストボックスを配置して、サブレポートの小計を参照して表示しています。 しかしサブレポートにデータがない時があり、【#エラー】という表示になってしまいます。 そこで、サブレポートにデータがない時は、【0】という表示にしたいのですが、どういった方法があるか、教えてください。 よろしくお願いします。

  • MS ACCESS 2003 サブレポート機能でメインレコードと関係の

    MS ACCESS 2003 サブレポート機能でメインレコードと関係のないレコードも表示される どなたかアクセスに詳しい方、教えて頂けませんでしょうか。 MS ACCESS 2003 にて、帳票印刷システムを構築しております。 ・請求ヘッダテーブル・・・顧客ID、顧客会社名、顧客氏名、住所 等 ・請求明細テーブル・・・顧客ID、請求明細名、単価、数量、小計 等 となっております。 こちらの状態で、顧客ID別(1人ずつ)に、紙面の上部に請求ヘッダテーブルの情報を羅列し、 紙面の下部に表形式で請求明細テーブルを表示するような形式の「レポート」を作成したいと考えております。 そこで、メインレポート/サブレポート機能を使って、上記を実現したいと思い、以下のような手順でトライしているのですが、サブレポート部分(デザインビューで見た場合の「詳細」部分)に、でメインレポート部分の顧客IDの請求明細データではないレコード(違う顧客IDの請求明細)まで表示されてしまいます。 ■リレーションを作成 ・メニュー「ツール」⇒「リレーションシップ」にて、請求ヘッダ-請求明細をひもづけ。 ・参照整合性にチェック。 ・結合の種類は「請求明細の全レコードと請求ヘッダの同じ結合フィールドのレコードだけを含める」。 ■レポートを作成 ・レポート⇒新規作成⇒レポートウィザードでレポートを作成。請求ヘッダのみの情報で作成。 ・デザインビューの詳細部分にて、サブレポートを呼び出し。請求明細テーブルを選択し、顧客ID、請求明細名、単価、数量、小計 等を選択。 上記のようにすると、顧客IDとは関連なく(正しい詳細データもそうでないデータも合わせて)10件の請求明細データが表示されます。 また顧客ID=1の場合も、次のページの顧客ID=2の場合もすべて同じ10件の明細データが現れます。 インプレスのアクセス本を参照しながら作業しているのですが、詳しくない分非常に苦労しております。 どなたか、なにとぞよろしくお願いいたします。

  • Access2007サブレポートの絞り込みついて

    Access2007のサブレポートの絞り込み(フィルタ)について教えて下さい。 いつも親切に教えて下さりありがとうございます。 Access2007でサブレポートを入れたレポートがあります。 フォームから絞り込み(フィルタ)をかけて印刷できるようにしているのですが、サブレポートが上手く作動しません。 主にフィルタは日付で検索します。 メインレポートとフォームは同じクエリから作成しています。 サブレポートは別のクエリからです。 リンクフィールドには顧客IDが親子で入っています。 フォームに印刷ボタンを設置し、DoCmd.OpenReport "レポート名", acViewPreview, , Me.Filter で、印刷出来るようにしています。 クエリには抽出条件は入れていません。 例えば12/17のみフィルタをかけた場合は、メインもサブを作動するのですが、 12/17と12/18など1つ以上の条件を選択してフィルタをかけると、メインのみ2日分表示されサブは12/17のみ表示されます。 サブレポートも同じようにフィルタをかけた場合に作動させるにはどうしたら良いでしょうか? 大変わかりづらい説明で申し訳ありません。 教えて下さい。よろしくお願い致します

  • ACCESSXPでサブレポートの集計をレポートに載せたい!

    ACCESSXPでレポートを作成しています。1つのレポートにサブレポートが1つ入っています。サブレポートに名前が載っている人数をカウントしたいのです。カウント関数を使うのだと思いますが、なかなか上手くいきません。=count([サブレポートの名前]![コントロールの名前])これでは表示されないのです。関数の書き方教えてください!!よろしくお願いいたします!!