※ ChatGPTを利用し、要約された質問です(原文:1対多データのレポート表示方法について)
1対多データのレポート表示方法について
このQ&Aのポイント
1対多の関係でデータを持っている場合、メインデータと関連する複数のサブデータをレポートで表示する方法について説明します。
メインデータとサブデータを結び付けるキーを使用して、サブデータをメインデータと一緒に表示します。
サブデータはメインデータに関連づけられたデータであり、複数行表示されます。メインデータに付随する情報(備考、住所など)とサブデータを組み合わせて表示することができます。
1対多データのレポート表示方法について
1対多の関係でデータを持っている、メインとサブ2つのテーブルがあります。
1つのメインテーブルのキーで、複数のサブテーブルのデータが取得されます。
このデータをレポートで表示する際に、下記のように表示させる方法はあるのでしょうか?
-----------------------------------
メイン1 | サブ1-1
|-----------------------------------
メイン1の備考 | サブ1-2
|-----------------------------------
メイン1の住所 | サブ1-3
-----------------------------------
メイン2 | サブ2-1
|-----------------------------------
メイン2の備考 | サブ1-2
|-----------------------------------
メイン2の住所 |
-----------------------------------
メイン3 | サブ3-1
|-----------------------------------
メイン3の備考 | サブ1-2
|-----------------------------------
メイン3の住所 | サブ1-3
-----------------------------------
つまり、メインのデータは、1レコードでサブデータの複数行分の高さを使います。
(備考、住所などは、メインテーブルの付属情報です。)
サブデータは、メインデータに関連づけられたデータが複数行表示されます。
※現在、下記のような形ならば、レポートの詳細部分に、サブレポートを入れてサブの部分を表示させる、ということで実現できたのですが・・・・
-----------------------------------
メイン1 | サブ1-1
メイン1の備考 |
メイン1の住所 |
-----------------------------------
| サブ1-2
-----------------------------------
| サブ1-3
-----------------------------------
メイン2 | サブ2-1
メイン2の備考 |
メイン2の住所 |
-----------------------------------
| サブ2-2
-----------------------------------
| サブ2-3
-----------------------------------
どうぞよろしくお願いします。
お礼
ご回答ありがとうございます。 ちょっとわたしの質問の仕方が悪かったかもしれません。 例えば サブ1-1 というのは、サブレコードの1項目ではなく、サブテーブルの1行となります。 サブ1-1 の中に、項目A、項目B、項目c・・・・というデータがあるのです。 なお、別のところで、 > グループヘッダーのFormat時イベントに > > Me.MoveLayout = False > > と書いておけば希望通りのレイアウトになるかも…。 とアドバイス頂いたのですが、 このようにすると、サブレコード数の高さで次のメインレコードが表示されてしまうため、 サブレコードが2件、メインの高さの行数が5行、 というような場合、2行分で次のメインレコードの表示になってしまうようで、どんどん行が重なってメチャクチャな表示となってしまいました・・・・・ そして、Me.MoveLayout = true だと、重なりは起こらないのですが、メインレコードの表示が終わった高さから、サブレコードの表示となるので、思った通りの表示となりません。 なお、グループヘッダーを使わず、すべて詳細セクションに置いて、メインレコードの項目のみを「重複データは非表示」でもやってみたのですが、こうすると、メインレコードの行の高さが5行分あったとすると、その中にサブレコードのデータは1行分づつしか入らないことになってしまいます。 (説明の表現がわかりづらいかもしれませんが。すみません) 結局、当初やっていたように、レポートの中にサブレポートを作って入れ、 親と子のレポートを「リンク子フィールド」「リンク親フィールド」で結びつけて表示させる、 という方法でしかできないことがわかりました。(恐らく) ※当初「サブレポートを使う方法ではできなかった」というのは勘違いでした。すみません。 皆さま、ありがとうございました。