<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 MS-Access97大魔法陳列棚>累計を印刷するレポート



【仕 様 な ど】MS-Access97で作成。Windows95でのみ動作確認。

【ダウンロード】←Zip形式(解凍後、mdb初期状態:およそ65KB)

【主 な 機 能】

レポートで各明細の累計を計算します。

【作 り 方 等】

各明細のとあるフィールドの数値を累積するレポートのサンプルです。


他のデータベースサンプルのところでも何度か解説させていただいてますが、AccessのOutput用オブジェクト(レポートないしフォーム)は、基本的に「レコードソースとしているテーブルやクエリーのレコード数分、処理を繰り返して印刷する」という仕組みを取っています。リアルタイムにデータが書き換わっても、最新の状態を出力するのに適しているのですけれど、例えば「行ごとに色を変えたい」とか、「1行ずつ足し算していって、累計を各行に出したい」などといった形で、各行で違う情報を出力するという考え方が全然ありません。

まずその点を理解しなければならないですね。
「だからAccessは使えない」とか厳しいことをおっしゃる方も多いんですが、まあそこは前向きに考えましょう。

このサンプルの中では、レポートのグループヘッダーフッターと、「フォーマット時」イベントを活用して、累積の計算をさせています。イベントには、コードビルダを使ってプロシージャを書いています。


まず、こんな感じのテーブルがあったとします。
[コード]と[受付日]はちょっとしたオマケです。[名前]と[数]に注目してください。

このテーブルには、毎日何をいくつ売り上げたのか、商品と数がどんどん入力されます。
で、[名前]ごとにまとめて、何が何日までにいくつ売れたか、累積を出したいと思います。


ちょうどこんな感じに・・・・。
なんだ、できるじゃん、と思うなかれ。
これはMS-Excelワークシートに取り込んで、足し算するようにしました。

Excelのような表計算ソフトは、平面的にデータを見渡して編集することができますから、
印刷イメージを自由に変更するのはばっちりですね。
Accessをお使いの方でも、印刷物だけはExcelに取り込んで加工して出している、
というケース、多いようです。

まあ、これに近いイメージのものは、Accessでも作れますから、挑戦してみましょう。


例として、このテーブルをもとに、こんなレポートを作ってみました。
単なる表形式のレポートですが、グループヘッダーフッターというものを利用してみようと思います。

下のように、並べ替え/グループ化の中で、[名前]フィールドのヘッダーフッターを表示するよう指示します。
と、レポート上に新たなヘッダーとフッターが出てきます。
別に何かに使うわけじゃないので、折りたたんでしまってもよいでしょう。

商品の名前が変ったら、1行分くらいあけたいな、というときは、フッターの方を1cmくらいあけておくとよいでしょう。

右の例では設定してませんが、ついでに[受付日]も昇順に並べ替えるようにしておけば、受付日順にレコードが並びますね。

で、[名前]のヘッダーのところと、[詳細]セクションのイベント「フォーマット時」に、累積を計算するプロシージャを書きます。

このあたりの様子さえ分かっていれば、コード自体はカンタンです。
Ruisekiという変数を宣言しておいて、[名前]のグループヘッダーがフォーマットされるときにゼロにし、詳細セクションがフォーマットされる度に[数]を足し込んで、レポート上に新たに設けた[累積]という名のテキストボックス(非連結)に代入していきます。

と、このレポートを開くと、下のようになります。
累計、計算されていますよね。