![]() |
||
<HOME <お願い事項 <Access2000 TOP <Access97 TOP <サイト内検索 | ![]() |
|
![]() |
||
MS-Access2002 なりきりデータベース設計 | ||
1 2 3 4 |
営業を始めてから2ヶ月ほど経ちました。
マイケルは、今までも売上データをもとに、売上金額を集計してみることにしました。
こういうクエリを作って実行してみると↓
日ごとの集計表が↓できました。
マイケル、毎月がんばってます。
このクエリ、グループ化するところの↓書式を変えれば、
何か適当な名前をつけて、このクエリ、保存しておこうかな。
マイケルは今、悩んでいます。
どうも、仕入れ事情がよくないんですよね。
資金繰りが苦しい・・・「マネーの虎」に応募しようかな・・・。
いや、ここはもうひとふんばりしましょう。
マイケルはやむなく、値上げを敢行することにしました。
これも世の常、いたし方ありません。
従来こういう価格で↓販売してたんですけども、
こんな具合に値上げをしました↓。
今、コナラは扱ってないのですが、いずれ販売を再開するときのために、新価格を設定しておきます。
さて・・・
商品マスターを書き換えたことで、日々の売上データ入力のときは、何もしなくても新価格がちゃんと参照できるようになりました。
これなら、事情がよくわからないアクセルくんでも、計算間違いせずに済みます。
売上入力の画面でも、新しい値段が表示されるようになってます。
でも・・・
さっき作った、月ごとの集計をするクエリ、もう一度開いてみると・・・。
あり?なんか、ずっと前の売上金額がえらく高くなってる・・・。
過去の売上まで、値上げした商品価格で販売したことになっちゃってます。
これはよくない・・・。
何ヶ月か経ってから過去の売上を振り返ることもあります。これじゃ、正確な売上を把握することができなくなってしまいます・・・。
さて・・・ここからが本番です。難所が待っています。
もう一度、リレーショナルデータベースの基本精神を思い出してください。
「(コンピュータにとって)合理的で無駄のないデータ管理」
これが、リレーショナルデータベースの基本です。
合理的、というところが少々あいまいな表現になるんですが、とにかく「計算して出せる値は、テーブルにフィールドを設けない」という点がポイントでしょうか。
売上金額 = 品物の値段 × 数量 ( × 税率)
この計算式で「今まさに売ろうとしている商品の売上金額」は、出せるわけですから、「売上金額」というフィールドはテーブルに設けず、フォーム上で計算するとか、クエリで計算するとかして「その都度必要に応じて」算出する、というのが、リレーショナルデータベースの基本です。
でも、
・過去の売上データを集計して月報を出したり、年間の売上金額の集計を出したりしたい場合は???
・2ヶ月3ヶ月先にまとめて請求書を出すときとかは???
・途中で商品の値段が変わったら、売上金額が「当時支払ってもらった金額」と違ってしまいますよね。
じゃあ、こういう場合、どうしたらいいのか・・・。
答えはありません。
工夫して苦労するより他に道はないのです。
やり方は決まってませんので、結果がよければすべてよし、ということで、ふたパターンほど例をご紹介しようと思います。
■パート1は、極力テーブルに「無駄」を設けずに、クエリや関数などを駆使して値段や売上金額を出す方法(ちょっと長いです)。
■パート2は、売上テーブルにも商品マスターにも、どっちにも「値段」というフィールドを設ける方法。
をご紹介します。
もちろんこの2種類しか方法がないというわけじゃありませんよ。
![]() |
![]() |
![]() |