• ベストアンサー

在庫管理の仕組みで質問

例えば商品テーブルに商品IDと商品名と在庫数、仕入販売テーブルには商品ID、仕入数、販売数、返品数のテーブルを作り、商品テーブルを親フォームに、仕入販売テーブルをサブフォームにしてフォームを作成したとします。 そこで商品を登録する際に、商品名を入力して、サブフォームに仕入数を50と入力したときに、在庫数も自動的に50になる方法が知りたいのですが、 どうすればいいかわかりません・・・。 ちょうどAccess2000のサンプル在庫管理がそういう仕組みではありますが、商品テーブルに在庫数フィールドがなく、どうなっているかわかりません・・・。 どうか教えていただけますようお願い致します!

質問者が選んだベストアンサー

  • ベストアンサー
  • kurisan
  • ベストアンサー率71% (10/14)
回答No.1

こんばんわ。 >サブフォームに仕入数を50と入力したときに、在庫数も自動的に50になる方法 との事ですがもう単純に一番簡単な方法はサブフォームの更新前処理に  Me.Parent.在庫数 = Me.Parent.在庫数 + Me.仕入数 としてやればいいかと思います。 ただ、このフォームを触っていればすぐ気が付くと思いますが最初50とサブフォームに入力して「あっ、間違えた!」と45と入力し直すと、親フォームの在庫数は95となってしまいます。 kintaro987のご使用環境がこういう事は避けたいというのであれば、回避する方法としてサブフォームのレコード移動時にもともと[仕入数]に入力されていた数値を変数[もともとの入力数]に代入させて、  Me.Parent.在庫数 = Me.Parent.在庫数 + (Me.仕入数 - もともとの入力数) とすればいいかと思います。 説明がへたくそで申し訳ありません。m( _ _ )m ご不明な点がありましたらまたご質問下さい。 でわでわ。。。

kintaro987
質問者

お礼

ばっちりできました! ありがとうございます!

その他の回答 (2)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

>サブフォームに仕入数を50と入力したときに、在庫数も自動的に50になる・・ 親フォームに在庫数と在庫総数を表示するフィールド(例えば在庫数1)を作り 在庫数1に =[在庫数]+[サブフォーム]!仕入数 で現在の在庫総数を表示 させ更新時にMe![在庫数] = Me![在庫数1]の記述をすればテーブルに保存出来ます。 しかし入力間違え等で多く入力していまった場合はマイナス入力で在庫数を変更し するようになってしまいます。(記述が加算のみのため) #2の方の云うように 仕入販売テーブルに商品ID・仕入数・販売数・返品数があるのでIDでソートして 仕入数-販売数+返品数の計算をして表示だけする方法が通常一般的だと思います。

kintaro987
質問者

お礼

どうもありがとうございました!!

  • KojiS
  • ベストアンサー率46% (145/312)
回答No.2

 普通は在庫数はデータ自体に持たなくて、「仕入数」-「出荷数(販売数)」+「返品数」で計算して表示するだけでしょう。

kintaro987
質問者

お礼

ありがとうございました!!

関連するQ&A

専門家に質問してみよう