<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--見積書を作る
   1 > 2 > 3 > 4 > 5 > 6 > 7 > 8 > 9 > 10 > 11 > 12 > 13 > 14 > 15 > 16 



テーブルだらけのMDBを作ります。まずは、「マスタ」系から・・・適当に何件かレコード入力しておきましょう。

この3つのテーブルは、見積書を入力するとき、参照できるようにと思って作るテーブルです。

まあ、いろんな考え方がありますけど・・・。
たとえば、5枚のメモ用紙に、山田さんの住所を書いて机の上に貼っておいたとします。山田さんの住所が変更になりました。
1枚のメモは書き換えて新しい住所にしておいたけど、他のメモの方を書き直すのを忘れてしまって、あれ?どっちが正しい住所だっけ?
山田さんって二人いるんだっけ???
なんてことに、極力ならないよう・・・。
メモには「山田さんの住所は台帳の50ページを見てください」って書いておいて、その都度台帳を見るようにしておけば、もし、山田さんがまた引越ししたとしても、台帳の50ページだけ書き直せばよいわけで・・・・・・・・。
と、こういう仕組みをうまいこと考えて、間違いとか、手間とか、凡ミスとかを極力減らそう、というのが、リレーションシップであり、テーブルの正規化なのです。

そんなわけで上の3つのテーブルには、なんか適当にデータ入力しといてください。その方がテストしやすいと思います。


というわけで、次にメインとなるテーブルを作るわけなんですが、まず、見積書1枚に対して1件発生するテーブルを作って・・・。

そしてから、その見積で「ブリまんじゅうとささくれ牛乳とこんもりバターロールを100個ずつね」とか言われた場合、ひとつの見積番号で3レコードデータが入ってくるような構造のテーブルを作ります。

ここで、ひとつ考えていかなくちゃならないのが、「単価」に対する考え方です。

商品の単価がしょっちゅう変わるような場合・・・たとえば、相場とか、キャンペーン中で安くなるとか、だんだん値段が下がっていくような商品だったりとか・・・・。半年くらい経ってから「あ、あのときの見積を参考しようかな」とか思って見積のデータを引っ張り出したとき、現在の商品価格で計算した見積金額が出てもらった方がいいのか、見積を出した半年前の商品価格で出した(つまりお客さんに提示した見積金額)方がいいのか、によって、「単価」という項目をどこに持たせるべきか、少し変わってきます。

わたしの考えなんでが・・・。見積のデータですんで、やっぱり、見積もりだしたときの商品単価で計算するべきかなぁって思うんです。なので、その場合は、「単価」という項目を見積明細テーブルにも持ちます。見積を入力するときに、商品番号を選択したら自動的に商品マスタに登録されてる単価を持ってくるような仕組みを考えてみようと思ってます。

で、このふたつのテーブルが、サブフォームやサブレポートのもとになってくるんですが・・・。

ここまで発想/ 設計するのが大変ですよね。こういうのは・・・いろんなサンプルdb とか見て、ある程度「パターンを覚えてしまう」のがいいかもしれません。もちろん、状況に合わせて1から設計できるようになるのが理想ですけど、ほんとに、こういうテーブル設計って難しいです。特に , 最終的に目指すのが「印刷物」の場合は、さらに難易度が高くなりますね。日本人が望む「印刷物の形」というのは、えてしてリレーショナル・データベースと合わない部分が多いのです。つまり、「日本人が好む印刷物の形」というのは、コンピュータから見るとあんまり合理的なデータの持ち方じゃないんですよ。多分ね。

なので、あまり難しく捉えず、ご自身で「作りたいなぁ」と思ってるデータベースと似た感じのサンプル db とかが載ってる本を買ってみて、まねしながら作っていくのがよいのかもしれません。

見積テーブル、見積明細テーブルは空っぽのまんまでよいですよ。

そして今回はモウひとつ・・・。見積番号を付けるためのちょっとしたお手伝いテーブルを作っておこうと思います。

メモ代わりに使おうと思ってるんで、主キーなしの 1 フィールドだけのちっちゃいテーブルを作っておきます。どうやって使うのかは、あとでお話しますね。
とりあえず1 レコードだけデータ作っておいてください。0 って入れておきます。


Master.mdb の中身はこんな感じになりました。

では、Master.mdb は閉じましょう。Access 一回終わらせちゃってもいいし、ツールバー左上の「新規作成」ツールボタンをクリックして新しいデータベースを作成し始めてもいいですね。 Access のウィンドウの中には一度に一つのデータベースしか開けないですから、新しいの作ったり開いたりすれば、前まで開いてたやつは勝手に閉じてくれます。