質問: ACCESSのクロス集計クエリとサブレポートについて教えてください。 Microsoft365同梱のACCESSを使用しております。 会社への入金の際に、入金日、入金額、支払社名、入金費目、内訳明細、明細金額などをメインフォームから入力し、この情報を入金伝票として印刷するシステムを作っています。 単票式メインフォームの入金番号をパラメーターとして、Q_入金明細Parameterというクエリを作り、このクエリから入金番号と入金費目を行見出し、支払社名を列見出しとし、明細金額の費目ごとの合計を集計するようにクロス集計クエリ(Q_入金明細Parameterのクロス集計)はできております。 さて、これをレポートで入金日、入金額、支払社名をメインレポートに表示し、サブレポートに入金費目ごとの明細金額合計を表示しようと、サブレポートウィザードで作ろうとするのですが、 「既存のテーブルまたはクエリを使用する」 を選択し、 Q_入金明細Parameterのクロス集計 を選択しても、「選択可能なフィールド」のボックスにフィールドが何も表示されません。 ほかにもクロス集計クエリは他用途で作っていて、これを選ぶとちゃんとフィールドが表示されているのですが、いろいろやってみても「Q_入金明細Parameterのクロス集計」にはフィールドが出てこないのです。 これはなぜなのでしょう。 クロス集計の作り方がまずいのでしょうか。
回答: [Forms]![F_請求内容]![入金番号] を使っているといるということは、その時点でそのフォームが開いていて、値が入っている状態でないとしたら、クロス集計クエリの結果は0件です。 なので、何のフィールドも表示されないということになります。 ([Forms]!は開いているフォームのコレクションになります。閉じているフォームは含まれません) [Forms]![F_請求内容]![入金番号]の部分を登録済みの入金番号をダイレクトに指定したクロス集計クエリに変更し、その上でウィザードを起動し、作成すればよいと思います。 完成後に[Forms]!に戻してやります。 クロス集計クエリのフィールドは、クロス集計の実行結果によって決まりますので(デザインだけでは未確定)、抽出条件を指定したクエリをもとにする場合は注意が必要です。