Microsoft Access 掲示板

クロス集計クエリからレポート印刷 / 23

50 コメント
views
4 フォロー
23
hiroton 2021/03/22 (月) 11:35:45 修正 4c4b9@f966d >> 22

続き

現在のレポート出力用のクエリにこの情報を追加してやれば不要なページを出力しないようにできます

商品名 f0 f1 f2 n0 n1 n2 G 商品名 f0 f1 f2 n0 n1 n2 Py Px P合計
A店 B店 C店 1 1 1 0 A店 B店 C店 1 1 1 0 0 9
A店 B店 C店 1 0 A店 B店 C店 1 0 0 9
A店 B店 C店 1 0 A店 B店 C店 1 0 0 9
A店 B店 C店 1 1 0 A店 B店 C店 1 1 0 0 9
A店 B店 C店 1 1 0 A店 B店 C店 1 1 0 0 9
A店 B店 C店 1 0 A店 B店 C店 1 1 0 8
A店 B店 C店 1 0 A店 B店 C店 1 1 0 8
A店 B店 C店 1 1 0 A店 B店 C店 1 1 1 0 8
A店 B店 C店 1 1 0 A店 B店 C店 1 1 1 0 8
A店 B店 C店 1 1 0 A店 B店 C店 1 1 1 0 8
A店 B店 C店 0 A店 B店 C店 2 0 0
A店 B店 C店 0 A店 B店 C店 2 0 0
D店 E店 1 1 1 D店 E店 1 1 0 1 4
D店 E店 1 D店 E店 0 1 4
D店 E店 1 1 D店 E店 1 0 1 4
D店 E店 1 1 D店 E店 1 0 1 4
D店 E店 1 D店 E店 0 1 4
D店 E店 1 D店 E店 1 1 0
D店 E店 1 D店 E店 1 1 0
D店 E店 1 D店 E店 1 1 0
D店 E店 1 D店 E店 1 1 0
D店 E店 1 D店 E店 1 1 0
D店 E店 1 1 D店 E店 1 2 1 2
D店 E店 1 1 D店 E店 1 2 1 2

「Px(各ページの列のまとまり)」はすでに求めていますね。「Q出力店舗のG」です。Q出力店舗の「G」は「Px」に変更します
「Py」も同様に求められます

Q出力商品リスト

SELECT 商品名
FROM テーブルA
GROUP BY 商品名;

Q出力商品ページグループ

SELECT 商品名, DCount("*","Q出力商品リスト","商品名<'" & [商品名] & "'") AS [No], Int([No]/5) AS Py
FROM Q出力商品リスト;

これで、商品ほにゃららの店舗foo店はページ(Py,Px)に出力されるという情報ができました。これを組み合わせてページごとの数量の合計を算出します
Q出力ページリスト

SELECT Py, Px, Sum(数量) AS 数量の合計
FROM (テーブルA INNER JOIN Q出力商品ページグループ ON テーブルA.棚番号 = Q出力商品ページグループ.棚番号) INNER JOIN Q出力店舗リスト_連番付き ON テーブルA.店舗名 = Q出力店舗リスト_連番付き.店舗名
GROUP BY Py, Px;

サンプルの場合に実際に得られる結果は

PyPx数量の合計
009
014
108
212

です。合計が「0」は実際には「データがない」なので出力されません。「数量」が「0」で実際に登録されているだとか、マイナス数量が許容されてて合計「0」がありうるとかだとまた変わってくるのでこの方法は使えないかもしれません

必要な情報がそろったのでレポート出力用のクエリを作成します
元データにはページの情報が含まれていないのでワンステップ挟んで最終的なクエリを作成します

Q出力全ページデータ

SELECT Py, テーブルA.*, Q出力店舗.*
FROM Q出力店舗, テーブルA INNER JOIN Q出力商品ページグループ ON テーブルA.棚番号 = Q出力商品ページグループ.棚番号;

Qレポート出力データ

SELECT
  棚番号
  , Sum(数量) AS 合計数量
  , Q出力全ページデータ.Py
  , Q出力全ページデータ.Px
  , f0
  , f1
  , f2
  , Sum(IIf([店舗名]=[f0],[数量])) AS n0
  , Sum(IIf([店舗名]=[f1],[数量])) AS n1
  , Sum(IIf([店舗名]=[f2],[数量])) AS n2
FROM
  Q出力ページリスト
    INNER JOIN
      Q出力全ページデータ
    ON
      Q出力ページリスト.Px = Q出力全ページデータ.Px
    AND
      Q出力ページリスト.Py = Q出力全ページデータ.Py
GROUP BY
  棚番号
  , Q出力全ページデータ.Py
  , Q出力全ページデータ.Px
  , f0
  , f1
  , f2
;

これで、ページ単位でデータがないデータは取り除いたデータが取得できます。「G」→「Px」等変更になってるのでレポートのデザインも合わせて修正してください

計算がかなり増えているのでレポート表示にもそれなりに時間がかかりそうな気がします。出力時間が気になる場合は、クエリを細かく分けて作成しているので「ここで遅くなる」等チェックしてみてください

通報 ...