合計値をページ下部に表示する(その1)

 レポートでのグループごとの合計値は、グループフッターにSum関数を置いて表示するのが基本です。しかし、グループフッターの位置はレコードの数などによって変化しますので、特に請求書などの様式において合計値をページ下部の所定の位置に表示したい場合に困ることがあります。かといってページフッターではSum関数を利用できません。以下では、この問題への対応例を挙げるものとします。
 ただし、仕様の穴をつくような方法ですので堂々とおすすめできるものではありません。あくまで参考としてご覧ください。
 また、次の記事ではAccessのFAQである「レポートの下部まで罫線を引いて合計値を表示したい」という場合の対応例を示しています。こちらの方が実践的と考えられますので、併せて参照願います。

www.accessdbstudy.net


 さて、以下では右のようなクエリに基づきの請求書の合計額を表示させるものとします。販売IDにより1件の販売が特定され、{販売ID,商品コード}の組み合わせにより1つの行(レコード)が特定されるものと考えてください。


 上記クエリをデータソースとするレポートを作成します。販売ID、商品コードにより並べ替えるものとし、販売IDについてはグループヘッダー(背景:青)とグループフッター(背景:黄)を置き、グループフッターの改ページを「カレントセクションの後」、つまりグループフッターの直後に改ページを行う設定とします。
 さて、ページフッターではSum関数を使えませんので、詳細セクションに金額の累計を表示するコントロールを置きます。名前を「金額累計」とし、コントロールソースは「=[金額]」、集計実行を「グループ全体」とします。
(※ヘッダー、フッターの名称は説明上置いているに過ぎず、当然ですが表示する必要はありません。「金額累計」を可視にしているのも同様の理由です。)

 そしてページフッター(背景:ベージュ)にてこの「金額累計」を参照すれば、直近の詳細セクションの「金額累計」の値を表示するはずですので合計値が表示されそうですが…


 実は0となってしまいます。


 そこで設定を1つ変更します。グループフッターの改ページを「カレントセクションの前」、つまりグループフッターの直前で改ページする設定とするのです。


 これで(なぜか)正しい合計値が表示されます。


 さて、改ページの設定を変更したため、ページフッターは次のページ上部に表示されることとなります。レイアウトに影響しないようページフッターの高さを0にしたいところですが、0にしてしまうとやはり先ほどの合計値は0になってしまいますので、高さは0よりちょっとだけ大きい値にしておくのが正解です。


 ところで、上記の例では1グループが1ページに収まっていますが、2ページ以上にまたがるものとなった場合は、各ページの下部にそこまでの累計が表示されることとなります。それはそれで使い道はあるのですが、毎ページ「合計」と表すのはおかしいですので表示の仕方を調整する必要が生じます。この方法については改めて示します。