<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 Access97データベース工作室>在庫のザの字はどう書くの〜♪
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20



いよいよ大詰め。棚卸をしましょう。

実際の倉庫の中の商品の数と、dbの中で知り得る数と、多少ずれが生じてきたりしますよね。
きっと。そんなことあっちゃいけないんでしょうけども・・・。

また、今のやり方だと、[出庫テーブル]の中身を集計して[商品マスター]から引き算してますよね。


なので、[出庫テーブル]のレコード数がばりばり多くなると、やっぱり処理的にキビシイかなぁとか思ったりして。
あ、でも、5000レコード10000レコードはどうってことないですよ。あくまでも気持ちの問題です。

在庫を検品して数を確認し、商品マスタの[期初在庫]を更新するとなると、当然[出庫テーブル]のレコードを空にしておくか、棚卸前のレコードは集計しないように考慮しないと、在庫数が合わなくなっちゃいますよね。

そうすると流れとしては

1)棚卸用のリストを印刷するか、画面に表示する(現在庫を把握できるもの)

2)倉庫の中の実際の在庫数を調べ、1)と照らし合わせる作業(これは手作業ですね)

3)2)の結果を、[商品マスター]の[期初在庫]に書き込む

4)[出庫テーブル][注文テーブル]を空っぽにする。(必要に応じて入庫テーブルも)

考えるところとしては、まず3)の部分で、どういうふうに更新するかってことですね。
棚卸している間も、当然なんか注文受けたりするだろうし、なるべく誤差が生じないように、且つ業務に支障をきたさないようにやんないとならないです。
これは現状の業務分析が必要なところですよね。

あとは4)。システム的にはがっと削除しちゃって、出庫テーブルをゼロレコードにしちゃえばいいと思うんですけど、例えばあとで「年間の営業マン別の売上状況表を出したい」とか言われたらどうします?削除しちゃったら何にも出せないですよね。

それと、間違って何回も棚卸しちゃうと、それはそれでおかしくなっちゃうと思うんで、前回いつ棚卸したのか、その辺がわかるようにした方がいいでしょう。

と、とにかくいろいろ考えます。
うーん・・・。じゃあ、[出庫テーブル]の中のレコードはどこか別のテーブルの中に移してから削除するようにしますか。それと、棚卸時、1)のリストを出すときに、棚卸用のテーブルを作成して、それを基に3)の処理を行うように考えてみましょう。

こういう処理は、会社によって、業種によって、取り扱う商品によって・・・考え方がさまざまだと思いますんで、少し時間をかけて設計してみてください。

最終的に[商品マスター]の[期初在庫]が、実際の倉庫の中の数と合えばオッケーということになるんで、その辺頭においてがんばってみましょう。


まずは、棚卸の調査のための入力画面とレポートを作ります。手っ取り早いのは在庫数を知るために作ったQ_現在庫クエリーなんですけど、このクエリーに直接入力するわけにはいかないですね。

そこで、このクエリーを基に、棚卸用のテーブルを新規に作ります。テーブル作成クエリーというのを利用します。

クエリーの名前は、Q_棚卸用とでもしましょう。

Q_現在庫から、[商品番号][商品名][期初在庫][注文数][現在庫]を選び、さらに右側に棚卸:""または棚卸:0というフィールドを作ります。

ただ空欄を作るだけならダブルコーテーションふたつでもいいですけど、数値として扱うのであれば、ゼロの方がいいかな・・・。

ダブルコーテーションふたつの状態でこのクエリーをデータシートビューに切り替えると、こんな風に[棚卸]っていうフィールドができるんです。

ゼロにすれば全部ゼロが入ると思います。うーん、数字を入力するフィールドにするんだし、ゼロの方があとあといいかもしれないですね。

もし、いっしょに「今までに入庫した数の総数」も出したいのであれば、別途入庫数の総数を求める集計クエリーを作っておいて、これをQ_棚卸用に追加すればよいでしょう。
これはお好みで。

 → 

結合の仕方に注意してくださいね。

で、こういう時のはみ出し情報なんですけども、当然のことながら[入庫テーブル]には全商品の情報があるわけじゃないんで、[Q_現在庫]主体のクエリーにした場合、どうしても[入庫数の合計]フィールドはぼこぼこ穴あき状態になるんですよね。いわゆるNullって状態になるんです。↓

値がないので、ゼロにすることもできないんですね。。。これでも問題ない場合もありますけども、なんか困る、という場合は、この時点でゼロを表示するようにしてしまいましょう。Nullは計算しようと思っても計算に使えませんし・・。

もう思いつかれた方もいらっしゃると思います。Iif関数を使って、Nullのときはゼロ、そうじゃないときは[入庫数の合計]を出すようにするんです。この時、フィールド名を[入庫数の合計]ではなく、別のものを使わないと、いわゆる循環参照って奴になっちゃうんで、[入庫総数]とか、なんか別のフィールド名を考えましょう。

入庫総数: IIf(IsNull([入庫数の合計]),0,[入庫数の合計])

ね、これで、あたかもひとつのテーブルの中の値であるかのようでしょ。[棚卸]もゼロにしてみました。

このクエリーを「テーブル作成クエリー」にしましょう。テーブルの名前は・・・棚卸テーブルとでもしますかね。

テーブル作成クエリーはその都度新しくテーブルを作りなおします。
このクエリー実行時に既に[棚卸テーブル]というテーブルが存在する場合にはそれを削除してから、改めて新しくテーブルを作りますので、その動きにそった作り込みをしましょう。

で、Q_棚卸用クエリーを試しに実行してみると・・・???
棚卸テーブルっていうテーブル、できます?中身も確認してみてくださいね。
で、このテーブルを基にして、実際の在庫数の入力画面と、調査用の印刷物を作ろうと思います。
フォームを印刷してもいいんですけど、一応練習練習。レポートも作りましょう。

いやー・・・。しかし、ずいぶんいろんなテーブルができましたね。