<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



いっぱいフォームのテストしてくうちに、なんか中途半端なレコードがテーブルにがんがんたまってますねー。
まあ、このままでもいいですけど、ちょうどひとくぎりってところだし、いったんテーブルの中身を削除しましょうかね。

[出庫テーブル]を開きましょう。まー、いろいろハデにデータが入ってますなぁ。
みなさんのテーブルはいかがでしょう。
これから、在庫を引き当てる処理作りますからね。
「注文数ゼロ」なんていうレコードががちゃがちゃあると、テストしにくいじゃないですか。
なので、いったん削除しちゃおうかな、と思ったわけです。

いっぺんに全部削除したいときは、下の図のオレンジのところをクリックして、全レコード選択します。

真っ黒になりますよね〜。で、キーボードから[Delete]キーを押すのです。

恐ろしいメッセージが出ますが、[はい]の方をクリックすると、完全に削除されます。


ついでといっては何ですが、今までの内容を活かしつつ、「入庫フォーム」も作ってみてください。
[入庫テーブル]を基にして、こんな感じの簡単なフォームで・・・。
検品とか受領とかの処理は今回は考えてないんで、いちおう、仕入れたものをそのまま受け入れるようなシンプルなもので行こうと思います。

自動採番とか、メーカーで絞り込んで商品を表示する仕組みとか、いろいろ工夫してみてください。
もちろん、全部手入力のフォームのままでもかまわないですよ。
とにかく、商品名と入庫数を入力できて、結果的に[入庫テーブル]にレコードがたまるようにしてください。

フォームのデザインその他はお任せです。


さて、では改めて出庫フォームを見てみましょう。

えーと、いよいよ在庫に関する処理をするわけなんですけども、この画面から入力した注文数、これを「商品マスター」の在庫のフィールドから引き算するようにすればいいんですよね。

で、どうするか、なんですけども・・・。考え方はふたつあります。

☆更新クエリーなどを用いて、[商品マスター]の[期初在庫]フィールドから[注文数]を物理的に引き算する。

☆物理的には引き算せず、その都度最新の在庫数を計算する。

さて・・・。これもケースバイケースってところですね。

例えば返品とか注文取り消しとかそういう処理にも対応しなくちゃいけないなら、物理的に削除しちゃうやり方だとちょっとまずいかもしれないですね。
在庫数をそく書き換えてっちゃいますから・・・。

とりあえず、計算上在庫数を知るという方針で行ってみましょうか。

じゃ、いちおう、何件か注文受けておいてください(笑)。

てきとうでいいので、なんか5〜6件出庫伝票入力しておいてください。


【在庫数を知る】

これは、クエリーをふたつ組み合わせることでなんとかなるでしょう。まずはやってみましょう。

まずひとつめのクエリー。
[出庫テーブル]を基に、[商品](コード)と[注文数]を選びます。
で、これを集計クエリーにします。

で、[商品]でグループ化、[注文数]を合計するように集計オプションを定めます。

これを実行(データシートビュー)にすると・・・???

すると、こんな感じ・・・。

なに?一件も出てこない???注文受けてないんじゃないですか???

当然のことながら、[出庫テーブル]が空っぽだったり1件分しかなかったりしたら、いまいち状況がわかんないですよ。

で、うまく作れて、注文数の合計を商品ごとに取ることができたら、このクエリーになんか名前をつけて保存します。
あたしはQ_注文数集計ってつけてみました。


[Q_注文数集計]と[商品マスター]を基に、もう一つクエリーを作ります。下のようなクエリー。商品番号同士結び付けます。

で、このクエリーもなんか名前をつけますね・・・。えー、Q_現在庫とでもしますかね。

で、お得意の「クエリー上での式」を作ります。空いてる右側のグリッドにむりやり

[期初在庫]-[注文数の合計]

ふたつのテーブルの中のフィールド同士で引き算してるんですね。アタマに式1:とかつきますけど、あんまり気にしなくていいです。

どうしても気になる・・・という方は、式1のところをなんか書き換えましょう。

現在庫とか。:(コロン)は削除しちゃだめですよ。ちゃんと意味があるんだから。

と?
こうなりますー。
式1のところを変えてる方は、変えたやつがフィールド名になってますよね。


なんで4件しか出てきてないかっていうと???それは、クエリーの結合の仕方によるんですよね。

ふたつのテーブルの間の結合線をダブルクリックすると、結合の方法を指定する画面が出てきます。

[商品マスター]主体の結合に変更すると・・・

ほらね。とりあえず[商品マスター]にあるレコードは全部出てくるけど、まだ一回も注文されたことのない商品に関しては、空欄ですよね。
注文数の合計とか。

え?なんで式1(あ、現在庫って名前に変えてみました)まで空欄なのかって?

空欄はゼロじゃないんですよ。
数値−空欄=空欄になります。そりゃそうでしょう。

え、やなんですか?んーまあ、そりゃごもっともですね。じゃあねぇ・・・。
とにかく、[注文数の合計]の空欄のところにゼロって表示するようにすればいいんですよね。
でも、実際はこんなレコード存在しないわけです。
[商品マスター]と結びついたからむりやり表示だけしてるだけで、実体ないんで、書式でゼロを、とかいってもどうしようもないんですよ。

で、前に作った「コンボボックスが空欄のときは全件出すクエリー」を思い出してください。