<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--日報?月報?
   1 2 3 4 5



たまに・・・「日報を作るにはどうしたらいいんですか」っていうメールもらったりします。
どうしたら、って言われても・・・日報って、どんなんです?およその会社の日報なんてどうやって作っていいかわかんないよう。


という話は置いといて・・・。

ない袖は振れませんぜ、ダンナ、ってことで、今日は「こんなレポート出したかったらこういうテーブル作ってみたらいいのではないか?」という練習をやってみましょう。
こういうのはですね・・・多分、ある意味「訓練」が必要だと思うんです。あんまりAccessのこと知らなくてもわりとすんなり設計できちゃう人もいるし、長年使い込んでてコードとか書けるのにどうもわからん・・・という人もいる。
要するに「こういうレポート作るにはどうしたらいいんですか?」じゃなくて、「こういうレポート作るにはどういうテーブルを作ればいいのか?」ってことです。
レポートもフォームも、とどのつまりはテーブルの中身を表示するための「枠」に過ぎません。どういう結果を出したいかってところから、うまくコアの部分を設計していかないことには・・・。どういうとこ気をつけてテーブル作っていけばよいか、その辺をじっくり考えていってくださいね。


今日はですね・・・こんな感じの日報(月報?)を印刷したいけどどうしたらいいんでしょう。
毎日、どの店でいくつ商品が売れたか、という一覧表です。(図がでかくてスイマセン・・・)

他のコーナーの解説にも同じことが言えるんですが・・・MS-Accessはもちろんパソコンのソフトですけど、同時に「データベース」であるわけですよね。データベースってものは、会社の中の業務にものすごく密接して存在するものだと思います。特にこうした日報表みたいなのって、会社によっても業種によっても考え方や要求される結果や体裁が異なるものだと思います。とにかく簡単なサンプルで基本をおさえておいて、皆さんのお仕事場の業務に当てはめることができるよう、がんばってみましょう。

いちおう今回は、A4横サイズの用紙に収まるようなレポートを作ってみようと思います。
細かいことは作りながらお話していきますね。
まずは、上のような「完成品」を頭に描いてみてください。


まず、根本的なところを考えます。

この表が出来上がるまでの間にどんなことが起こるのでしょう。
データベースとしては、「毎日毎日なんかしら商品が売れて売れた商品の数が入力されていくテーブル」を用意しないといけないですね。
これをどういう形で設計するか・・・が、最大のポイントになります。しょっぱなから山場をむかえています。

たとえばわたしはこんな感じのテーブルを用意しました。

こうやって表示しちゃうとわかりにくいんですけれど・・・とにかく、何か売れたら1枚伝票を起こして、いつ、なにが、どこで、いくつ売れたか、ということを1行分の情報としてためていくような構造のテーブルです。
こんな感じの入力フォームがあって、なんか売れるごとに発行した伝票を入力しているようなイメージです。

こうやって結果からお話しちゃうと簡単っぽそーなんですけど、出したい結果をもとにこうしたテーブルを設計するのって、ほんとに難しいです。Accessっていうか、いわゆるリレーショナルデータベースっていうものは、これが一番難しいんですよ。え?VBAのが難しい?いまだにそんなもんが一番難しいと思ってる人は誰ですか???んなもん「テーブル設計」の比じゃありませんよ。

こういうレポートを作るとき、コンピュータ泣かせなのが「店の数がしょっちゅう増えたり減ったりする」場合かな・・・。おわかりの方は承知しておいでだと思いますが。。。
これもなんでだか、おいおいお話しますね。
また、たとえば、1か月分の集計をしたとして、1個も何にもぜんぜん物が売れなかった店があったとしたら・・・これも結構システム泣かせです。
こういうことが起こりえるかどうか、その辺も考えながら進めてみましょう。

さて、上記のテーブル(名前を[売上テーブル]とします)はどういうテーブルなのか、どういったレポートを出すのか、を考えます。
っていっても今日は練習ですけどね。

わたしたちが「1ヶ月分のデータ」と望んでいても、何もしなければテーブルには何か月分も何年分もどんどんデータがたまっていくし、何もしなければテーブルに入っているデータを全部集計したレポートになっちゃいますよね。でも、「先月のデータ」を集計したい場合もあるかもしれないし・・・。とにかくテーブルにはどんどんデータをためていくということで、レポートに必要な情報だけかき集める仕事はクエリに任せましょう。

たとえば・・・「必ず2001年03月のデータ」だけ集計したいのであれば、

Format関数をうまく活用すれば、[売上日付]から「年」と「月」の部分だけはじき出すことができますよね。↑
「月」だけでもいいのかもしれないですが、もし、何年分もデータがたまっていくようなテーブルであれば・・・いちおう配慮しておいた方がいいんじゃないかと思います。

もし、「今月の分」を出したいと、もう決まっているのであれば、format関数にDate関数をうまく組み合わせて↓抽出条件を作ってみましょう。

Format関数やDate関数については、他のコーナーでもちょっとお話してますのでよかったら参考にしてください。

もし、フォームなどで指示を出したいのであればこんな感じのフォームを作って・・・。

こんな感じの抽出条件にしてやればよいはず。↓

フォームの名前が[フォーム]で、テキストボックスの名前が[テキストボックス]と仮定した場合です。
また、このテキストボックスへの入力は「yyyy/mm」で統一してもらいます。
・・・と、こんな感じの仕組みならもうお手のもの、って方もいらっしゃるかな。