前提
Microsoft Accessを使ってレポート作成をしています。
クロス集計した結果をレポートに反映させたいのですが、
列の数が動的に変化するため、改ページして2枚目以降のレポート作成をどのようにすればいいのか試行錯誤しています。
クロス集計で表示したい内容を出すところまではできましたが、
レポートの表示列が固定(?)なため、何列ごとに改ページするというような内容をVBでコードを書いていくしかないと思いますが、何列目が終わったら改ページして再度同様の内容で続きの集計結果を描写するという方法が思いつきません。
お知恵をお貸しいただけますと幸いです。
実現したいこと
- 指定した年月の範囲を抽出条件としてクロス集計する
- 一番左の列(日)は固定で、1日~31日を表示
- 次の列から指定した年月日の範囲を表示
<例> 2017年05月~2019年03月を抽出条件として指定して、その範囲の検索結果を表示
- 指定した年月の範囲はクエリの列固定とする
- 1枚の列表示は「日」の項目を合わせて5列表示とする
クロス集計結果
| 日 | 2021-01 | 2022-02 | 2022-03 | 2022-04 | 2022-05 | 2022-06 | --- | |
|---|---|---|---|---|---|---|---|---|
| 金額 | 金額 | 金額 | 金額 | 金額 | 金額 | |||
| 1日 | 70000 | 1000000 | ||||||
| 2日 | 30000 | 60000 | 100000 | |||||
| 3日 | 50000 | 100000 | ||||||
| 4日 | 10000 | 80000 | ||||||
| 5日 | 20000 | |||||||
| 6日 | 40000 | |||||||
| 7日 | 200000 | |||||||
| 8日 |
上記内容を下記のような形にレポート作成することは可能でしょうか?
| 日 | 2021-01 | 2022-02 | 2022-03 | 2022-04 |
|---|---|---|---|---|
| 金額 | 金額 | 金額 | 金額 | |
| 1日 | 70000 | |||
| 2日 | 30000 | 60000 | ||
| 3日 | 50000 | |||
| 4日 | 10000 | 80000 | ||
| 5日 | 20000 | |||
| 6日 | 40000 | |||
| 7日 | 200000 | |||
| 8日 |
| 日 | 2021-05 | 2022-06 |
|---|---|---|
| 金額 | 金額 | |
| 1日 | 1000000 | |
| 2日 | 100000 | 30000 |
| 3日 | 100000 | |
| 4日 | ||
| 5日 | 20000 | |
| 6日 | ||
| 7日 | ||
| 8日 |
該当のソースコード
- 日付テーブル(内容は1-31)
- 販売テーブル
| ID | 取引先コード | 取引先名 | 商品コード | 商品名 | 単価 | 数量 | 日付 |
|---|---|---|---|---|---|---|---|
| 1 | 1 | A商店 | 11111 | 商品A | 100 | 10 | 2022/7/1 |
| 2 | 1 | A商店 | 11111 | 商品A | 100 | 5 | 2022/7/14 |
| 3 | 1 | A商店 | 11111 | 商品A | 100 | 6 | 2022/7/21 |
| 4 | 1 | A商店 | 11111 | 商品A | 100 | 1 | 2022/6/16 |
| 5 | 1 | A商店 | 11111 | 商品A | 100 | 22 | 2022/6/10 |
| 6 | 1 | A商店 | 11111 | 商品A | 100 | 3 | 2022/6/14 |
| 7 | 1 | A商店 | 11111 | 商品A | 100 | 7 | 2022/5/18 |
| 8 | 1 | A商店 | 11111 | 商品A | 100 | 8 | 2022/5/27 |
| 9 | 1 | A商店 | 11111 | 商品A | 100 | 9 | 2022/8/5 |
| 10 | 1 | A商店 | 11111 | 商品A | 100 | 16 | 2022/8/9 |
| 11 | 1 | A商店 | 11111 | 商品A | 100 | 5 | 2022/8/7 |
- 集計クエリ
SELECT Format$(販売クエリ.日付, "yyyy-mm-01") AS [month], Day(販売クエリ.日付) AS 日, 販売クエリ.日付, 販売クエリ.取引先コード, 販売クエリ.取引先名, 販売クエリ.商品コード, 販売クエリ.商品名, [数量]*[単価] AS 値 FROM 販売クエリ;
- クロス集計
TRANSFORMMin(Q_1.値) AS 値の最小 SELECT F_日付.日付 FROM F_日付 LEFT JOIN Q_1 ON F_日付.日付 = Q_1.日 GROUP BY F_日付.日付, Q_1.日付 PIVOT Q_1.Month IN ("2022-01-01","2022-02-01","2022-03-01","2022-04-01","2022-05-01","2022-06-01")

0 コメント