<HOME  <お願い事項  <Access2000 TOP   <Access97 TOP   <サイト内検索
 MS-Access2002 なりきりデータベース設計
  1 2 3 4



漕げよマイケル データベース作成 3_2

営業を始めてから2ヶ月ほど経ちました。
マイケルは、今までも売上データをもとに、売上金額を集計してみることにしました。

こういうクエリを作って実行してみると↓

日ごとの集計表が↓できました。

マイケル、毎月がんばってます。



このクエリ、グループ化するところの↓書式を変えれば、

月ごとの集計表にも↓なりますよね。

何か適当な名前をつけて、このクエリ、保存しておこうかな。



マイケルは今、悩んでいます。
どうも、仕入れ事情がよくないんですよね。
資金繰りが苦しい・・・「マネーの虎」に応募しようかな・・・。

いや、ここはもうひとふんばりしましょう。
マイケルはやむなく、値上げを敢行することにしました。
これも世の常、いたし方ありません。

従来こういう価格で↓販売してたんですけども、

こんな具合に値上げをしました↓。

今、コナラは扱ってないのですが、いずれ販売を再開するときのために、新価格を設定しておきます。



さて・・・
商品マスターを書き換えたことで、日々の売上データ入力のときは、何もしなくても新価格がちゃんと参照できるようになりました。
これなら、事情がよくわからないアクセルくんでも、計算間違いせずに済みます。

売上入力の画面でも、新しい値段が表示されるようになってます。



でも・・・
さっき作った、月ごとの集計をするクエリ、もう一度開いてみると・・・。

あり?なんか、ずっと前の売上金額がえらく高くなってる・・・。
過去の売上まで、値上げした商品価格で販売したことになっちゃってます。
これはよくない・・・。
何ヶ月か経ってから過去の売上を振り返ることもあります。これじゃ、正確な売上を把握することができなくなってしまいます・・・。

さて・・・ここからが本番です。難所が待っています。
もう一度、リレーショナルデータベースの基本精神を思い出してください。
「(コンピュータにとって)合理的で無駄のないデータ管理」
これが、リレーショナルデータベースの基本です。
合理的、というところが少々あいまいな表現になるんですが、とにかく「計算して出せる値は、テーブルにフィールドを設けない」という点がポイントでしょうか。

   売上金額 = 品物の値段 × 数量 ( × 税率)


この計算式で「今まさに売ろうとしている商品の売上金額」は、出せるわけですから、「売上金額」というフィールドはテーブルに設けず、フォーム上で計算するとか、クエリで計算するとかして「その都度必要に応じて」算出する、というのが、リレーショナルデータベースの基本です。

でも、

   ・過去の売上データを集計して月報を出したり、年間の売上金額の集計を出したりしたい場合は???
   ・2ヶ月3ヶ月先にまとめて請求書を出すときとかは???
   ・途中で商品の値段が変わったら、売上金額が「当時支払ってもらった金額」と違ってしまいますよね。

じゃあ、こういう場合、どうしたらいいのか・・・。

答えはありません。
工夫して苦労するより他に道はないのです。
やり方は決まってませんので、結果がよければすべてよし、ということで、ふたパターンほど例をご紹介しようと思います。

  ■パート1は、極力テーブルに「無駄」を設けずに、クエリや関数などを駆使して値段や売上金額を出す方法(ちょっと長いです)。
  ■パート2は、売上テーブルにも商品マスターにも、どっちにも「値段」というフィールドを設ける方法。

をご紹介します。
もちろんこの2種類しか方法がないというわけじゃありませんよ。