お願い①の件
Pyも考え方はPxと同じなので細かいこと省略しましたが、>> 23の「Q出力商品ページグループ」は実際の出力に合わせて調整が必要です
SELECT 商品名, DCount("*","Q出力商品リスト","商品名<'" & [商品名] & "'") AS [No], Int([No]/5) AS Py
FROM Q出力商品リスト;
↓
SELECT 商品名, DCount("*","Q出力商品リスト","商品名<'" & [商品名] & "'") AS [No], Int([No]/17) AS Py
FROM Q出力商品リスト;
お願い②の件
=IIf([Px]=0,[合計数量])
例えば1店舗のみのときも空白になるってことでしょうか?
計算式を理解してもらいたいのですが、「Px」が「0」の時だけ[合計数量]を表示する(それ以外の時は何もしない=空白になる)という処理をしています。
『「Px」が「0」』とは列データが「A店~K店」のデータですね。クロス集計クエリで全データ出力したときの左端のページということです。その上で「データがないときはページを印刷しない」という処理を追加しているので『ページのグループ(Px)が「0」の時』と固定すると「Px=0(A店~K店)」のデータがないときは[合計数量]を表示するページが印刷されないということです。
=IIf([Px]=DMin("Px","Qレポート出力データ","Py=" & [Py]),[合計数量])
とても重いです。
そうなるだろうなぁと思っていました。とりあえず、計算式でとんでもない無駄をしていました
=IIf([Px]=DMin("Px","Q出力ページリスト","Py=" & [Py]),[合計数量])
少しは速くなると思います。いずれにせよ、これが必要ならデータベース的な計算をさせるととても苦しいモノなのでVBAで対応する案件かと思っています
'Q出力全ページデータ.f8を有効なフィールド名、または式として認識できません。
クエリの整理が必要かなぁと思っていたので触れていなかったんですが、「Q出力店舗」の問題ですね。これがクロス集計クエリなので、データ数が少ないと列数が足りなくなります。データを変えながら「Q出力店舗」を開いてみてください。このクエリでフィールドが固定であればいいのでクエリ列見出しに"f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10"
と設定すれば良いでしょう
お願い④の件
クエリの問題ですか?レポートデザインの問題ですか?
元データのフィールドはどうなっていますか?(「数量」自体も実際に存在するフィールドなんでしょうか?)
レポートのデザインであれば、「ケースの数量」「バラの数量」「ケースの文字」「バラの文字」の4つのテキストボックスがあることを想定しています
合計数量の表示をVBAで対応する場合
レポートデザインで「Py」にヘッダーセクションを付けます
改ページを「カレント セクションの前」に設定します
※グループヘッダー1は「Py」のヘッダーの名前です。実際のデータに合わせて変更してください
あれこれ試していたら思っていたよりも簡素になりました。ただ、これが何で正しく動くのかというのは結構難解な気がします。解説は必要であれば、ということで