![]() |
||
<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という変数を宣言しておいて、[名前]のグループヘッダーがフォーマットされるときにゼロにし、詳細セクションがフォーマットされる度に[数]を足し込んで、レポート上に新たに設けた[累積]という名のテキストボックス(非連結)に代入していきます。
と、このレポートを開くと、下のようになります。
累計、計算されていますよね。
![]() |