- ベストアンサー
Accessレポートのレイアウトについて
Accessレポートのレイアウトについて 現在レポートを作成していて行き詰っています。 レコードを3件出力したら、グループヘッダー部を表示したいのです。 いろいろ調べて、指定件数出力したら改ページする。というのは見つけたのですが、 改ページせずに、同じページにグループヘッダを出したいのです。 アドバイスいただければうれしいです。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
グループヘッダはコントロールブレークする時に 生成されます。コントロールブレークとは特定の フィールドの値(並べ替えにより、同じ値が並ぶ と想定されている)が切り替わると言うことです。 3件と言う単純な切り替わり目をどうやって認識 させるかが、本件の課題と言えます。 それには並べ替えられたクエリのレコード順位を 求められればよい訳で、これを3で割った商を グループ化項目に指定します。 しかし、この「レコード順位」を求めるのは言うは 易く行うは難しの代表でして、簡単ではありません。 一例として、テーブルTにA,B,C,Dのフィールドが あり、Aが一意キーで、これの昇順に出力すると仮定 すると、以下のようにSQLを形成します。 SELECT X.A,X.B,X.C,X.D,COUNT(Y.A) AS 順位 FROM T AS X LEFT JOIN T AS Y ON X.A>Y.A GROUP BY X.A,X.B,X.C,X.D つまり、同一テーブル内で、自分より小さいキーの レコードを数えたものが順位(0、1、2…)に なります。但し、レコード件数が多いと、速度が 遅くなるので、10万レコード以上の場合は別の手を 考えた方がよいかも知れません。
その他の回答 (1)
- layy
- ベストアンサー率23% (292/1222)
レコード3件毎が決まっているなら レコードを3件分を1レコードにした状態の(横並び)テーブルを作れば レポート作成時にヘッダを出しやすいのではないでしょうか。 3件ごとにするには連番でもつけるようになると思いますが、 クロス集計クエリ使えば、連番を横軸にすると横並びにはできそうです。 【テーブル】 レコードA:1 レコードB:2 レコードC:3 レコードD:1(4の余り) レコードE:2(5の余り) 【中間テーブル】 1・・・・、2・・・・、3・・・・ レコードA、レコードB、レコードC レコードD、レコードE、空エリア 【レポート】 ヘッダ 詳細(レコードA、レコードB、レコードC) ヘッダ 詳細(レコードD、レコードE、空エリア)
お礼
大変遅くなりまして、アドバイスありがとうございます。 参考にさせていただきます!