![]() |
||
<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_棚卸用クエリーを試しに実行してみると・・・???
棚卸テーブルっていうテーブル、できます?中身も確認してみてくださいね。
で、このテーブルを基にして、実際の在庫数の入力画面と、調査用の印刷物を作ろうと思います。
フォームを印刷してもいいんですけど、一応練習練習。レポートも作りましょう。
いやー・・・。しかし、ずいぶんいろんなテーブルができましたね。
![]() |
![]() |
![]() |