• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:1対多データのレポート表示方法について)

1対多データのレポート表示方法について

このQ&Aのポイント
  • 1対多の関係でデータを持っている場合、メインデータと関連する複数のサブデータをレポートで表示する方法について説明します。
  • メインデータとサブデータを結び付けるキーを使用して、サブデータをメインデータと一緒に表示します。
  • サブデータはメインデータに関連づけられたデータであり、複数行表示されます。メインデータに付随する情報(備考、住所など)とサブデータを組み合わせて表示することができます。

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

  • ベストアンサー
noname#192382
noname#192382
回答No.1

アクセスを使いメインテーブルに氏名、備考、住所を入力してあり、サブテーブルに第1項目、第2項目、第3項目を入力してあるものとします。 クエリーで二つの表を合体します。レポートで6つのフィールドを図のように配置し、罫線を入れると図のようになります。(すみませんこぴーしたら罫線は消えてしまいました) 山一郎 160 学生 50 東京 10 川次郎 180 事務員 70 大阪 20

peewee726
質問者

お礼

ご回答ありがとうございます。 ちょっとわたしの質問の仕方が悪かったかもしれません。 例えば サブ1-1 というのは、サブレコードの1項目ではなく、サブテーブルの1行となります。 サブ1-1 の中に、項目A、項目B、項目c・・・・というデータがあるのです。 なお、別のところで、 > グループヘッダーのFormat時イベントに > > Me.MoveLayout = False > > と書いておけば希望通りのレイアウトになるかも…。 とアドバイス頂いたのですが、 このようにすると、サブレコード数の高さで次のメインレコードが表示されてしまうため、 サブレコードが2件、メインの高さの行数が5行、 というような場合、2行分で次のメインレコードの表示になってしまうようで、どんどん行が重なってメチャクチャな表示となってしまいました・・・・・ そして、Me.MoveLayout = true だと、重なりは起こらないのですが、メインレコードの表示が終わった高さから、サブレコードの表示となるので、思った通りの表示となりません。 なお、グループヘッダーを使わず、すべて詳細セクションに置いて、メインレコードの項目のみを「重複データは非表示」でもやってみたのですが、こうすると、メインレコードの行の高さが5行分あったとすると、その中にサブレコードのデータは1行分づつしか入らないことになってしまいます。 (説明の表現がわかりづらいかもしれませんが。すみません) 結局、当初やっていたように、レポートの中にサブレポートを作って入れ、 親と子のレポートを「リンク子フィールド」「リンク親フィールド」で結びつけて表示させる、 という方法でしかできないことがわかりました。(恐らく) ※当初「サブレポートを使う方法ではできなかった」というのは勘違いでした。すみません。 皆さま、ありがとうございました。

関連するQ&A