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



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

そんなわけで、ここから先は、オマケです。

新規にデータを入力するのであれば、別に難しいことは何もないんですが、でも、今回は、ある程度お仕事が進んでしまっていて、売上のデータが「売上テーブル」に入っちゃってるんですよね・・・。
これをこのまま活かしつつ、作業を進めていきたいんです。
そこで、マイケルの「売上テーブル」を「売上テーブル」と「売上明細テーブル」に分ける作業、やってみようと思います。

今作ったばかりのフィールドには、何も値が入ってませんから、

「売上テーブル」の「伝票番号」を主キーにてテーブルを保存しようとしても、こんなメッセージが出ちゃいます。
なので、主キーの設定をするのは後回しにして、

  1)「売上テーブル」に伝票番号を何かしらつける
  2)「売上テーブル」から「売上明細テーブル」に、商品番号や数量などのデータを移す

と、いうような作業をやります。


今、マイケルの手元のデータベースでは、「売上テーブル」に154件のデータがありました。

これらのデータは、過去の売上データなので、とりあえず適当な番号を付けようと思います。
決まったやり方があるわけじゃないですから何でもいいんですが、たとえば、↓こんな感じのコードを書いて実行してやれば、

伝票番号が↓できあがります。



次に、追加クエリを使って、「伝票番号」「商品番号」「数量」「値段」の4つのフィールドの値を「売上明細テーブルに追加します。

たとえばこんな感じの追加クエリ↑

このクエリを実行した後、保存しないでおいたほうがいいかもしれないですね。
このクエリは、一回っきりの使用になるはずですよね。繰り返し使うためのものではなく、今回の、「売上と明細を分けるため」に実行するだけ・・・。
こういうクエリを作ることは多々あるかと思うんですが、これをいちいち保存して残しておくと、クエリだらけになって後で「このクエリ何のために作ったんだっけ?」というわけのわからない状況に陥りがちです。
必要になったらまた作るか、どういうクエリを作ったか紙に書き留めて記録を残しておくにとどめるとかしたほうが、いいんじゃないかなぁと思います。

まあ、私が申し上げることではないですが・・・。



これで、「売上明細テーブル」に、過去の「商品番号」「値段」「数量」のデータが入りました。

で、「売上テーブル」から、「商品番号」「数量」「値段」の3つを削除してしまえばOK。

このときおそらく、メッセージが2回ほど出るはずです。
「商品番号」にインデックスの設定がされてると思いますんで、その確認メッセージも出てくると思いますが、いらないのでとにかく削除してしまいましょう。
これで、「売上テーブル」の「伝票番号」を主キーにすることができると思います。

これで、「売上テーブル」と「売上明細テーブル」は、「伝票番号」によって関連付けられ、「売上テーブル」1件につき、「売上明細テーブル」には同じ伝票番号のデータが複数件入ってきますよ、ということをMS-Accessに教えることができますね。
リレーションシップの設定画面で、ふたつのテーブルを選び、伝票番号同士を結びつけて、土台の完成です。



さて・・・売上のデータを「売上」と「売上明細」に分けたことで、今まで作りこんできた「在庫」とか「売上集計表」とか、全部全部「売上明細テーブル」を基にするように作り直さなくちゃならなくなるわけです。「売上テーブル」の「商品番号」や「数量」は「売上明細テーブル」に移ったことになるわけなので、クエリとかフォームとか、この点を中心に作りかえていかないとならないんですよね。

でも、多分、1から作り直したほうが簡単だと思う・・・。
面倒です。すごく。はっきりいって。

フィールドが増えるとか減るとかくらいなら、あまりインパクトはないかもしれないですが、テーブルの構造が根本的に変わるような場合、あちこちいろいろ作り直していかないとならなくなってしまいます。
こんなことに陥らないように、最初にしっかり業務分析して、業務の内容にあったテーブルの設計をしていくべきですよね。

と、簡単ではありますが、作り変えてみたものをここに・・・mcl_donguri5.zip
入力フォームはかなり作り変えてますので、あんまり参考にならないかもしれないですが・・・。

以上で、「漕げよマイケル」シリーズは終わりです。
マイケルもお店の方がんばってますので、きっとまた、お目にかかることもあると思います。
またお会いする日まで、さようなら〜!