レポート上でグループ化したグループの、グループ内レコードではなくグループ数をカウントしたいと思っています。
現状
データソース(集計クエリ)
フィールドA | フィールドB | フィールドC | フィールドD |
---|---|---|---|
チームうさぎ | 株式会社りんご | タンバリン | 山田たろう |
チームうさぎ | 株式会社りんご | マラカス | 田中よしお |
チームうさぎ | みかん株式会社 | タンバリン | 中村じろう |
チームぞう | 合同会社いちご | タンバリン | 村尾つねお |
チームぞう | 合同会社いちご | マラカス | 尾崎ゆたか |
チームわに | 株式会社メロン | タンバリン | 崎山さぶろう |
※プロパティ>書式 にて 重複データ非表示:はい
※重複データはクエリ元の各テーブルでそれぞれ正規化してあるので、クエリ・レポートは実際はユニークキーで構成されています。
グループ
レポート上で
- フィールドA
- フィールドB
の順でグループ化しています。
- フィールドB
作りたいもの
拙い手書き・ピンぼけで申し訳ないですが、作りたいレポートのデザインビューのイメージを添付します。
(スマホの外カメラが故障中で内カメラで撮ったため、ピンぼけしています)
チームうさぎの中に、グループがいくつ(=りんご、みかんの2つ)
チームぞうの中に、グループがいくつ(=いちごの1つ)
・
・
・
というように表示したいのです。
本掲示板管理人のhatenaさんの、2019/4/11移行前のFC2ブログ内エントリ「レポート上でグループ化した項目を集計」の「グループ化したフィールドを集計」を参照して試しましたが、エントリ内でいう「グループ件数」テキストボックスをレポートフッターではなく、上位にネストしているグループのグループヘッダー(あるいはレポートヘッダー)に配置したいです。
エントリの方法ですと、集計するテキストボックス(グループ件数)が集計対象の連番テキストボックス(グループ連番)より先にありますので、集計できない(1しか表示されない)状態となっております。
どうしたらよいか、または関連機能やチェックすると良いプロパティがあるか、お知恵をお貸しください。
グループヘッダーとなるとリンク先の方法では無理ですね。
方法としては2つ考えられます。
1.集計クエリでグループ件数を計算して、それをレポートのレコードソースのクエリと結合して、それをレコードソースとする。
2.VBAでレポートのフォーマット時でグループ件数を取得して連想配列に格納して、印刷時にグループヘッダーで出力する。
1.の方法で回答します。
まず、現状の集計クエリからクエリを作成して、フィールドAとフィールドBを表示させて、
クエリプロパティの「固有の値」を「はい」にします。
これで、フィールドBの重複が排除された出力が得られます。
フィールドA グループ化
フィールドB カウント
これで、重複を排除した件数が取得できます。
このクエリをレポートのレコードソースのクエリと結合させてレポートのレコードソースにすれば、
ご希望の件数をグループヘッダーに表示できます。
回答いただきありがとうございます。
1の方法で試しまして解決しました!
Access使い始めて間もないので、一つの目的に対していくつものクエリを重ねてよいものか、プロパティなどをいじれば少ない工数でできるのではないか、といろいろ考えて手詰まっておりましたが…。もっとシンプルに、単純なクエリで一つ一つ進めればいいのだなと思いました。
2の方法は私には難しいと思うので、もう少しAccessとVBAに慣れてから勉強することにします。
ありがとうございます。