- ベストアンサー
access 在庫計算
今accessで在庫管理をしています 売上入力のフォームに、在庫テーブルから在庫数を表示させて 売却数を入力したついでに自分で計算して在庫数を変更しています 計算を自動化して在庫数が更新されるようにしたいのですが、どうやったらいいでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
入力フォームの中にサブフォームで在庫テーブルが表示されているのでしょうか。 ボタンを作成して、マクロビルダーで 値の代入 アイテム サブフォームの在庫数 式 サブフォームの在庫数-メインフォームの出荷数 多分こんな感じ? [Forms]![在庫]![在庫数].[Form]![在庫数]-[Forms]![売上]![売上数] *式ビルダー利用してそちらのフォームに合わせてみてください。 としてボタン押したら在庫が減るようには出来ると思います。 ただ基本的には、在庫数は売上(入出荷)テーブルで 入荷数の合計-出荷数の合計で求められます。在庫テーブルに 在庫数のフィールドをおいた場合、どの時点で計算にするかが問題になります。
その他の回答 (1)
Q、どうやったらいいでしょうか? A、およそ自動計算なんて不可能です。 商品マスター: ID_品名_検索スペル _1_A____A_________ _2_B____B_________ 商品在庫明細: ID_商品マスター_ID_単価____期首在庫数_前月期首在庫数_前月仕入数_前月売上数_当月仕入数_当月売上数 _1_______________1_\10,000__________0______________0__________0__________0__________0__________0 _2_______________2_\20,000__________0______________0__________0__________0__________0__________0 _3_______________2_\19,000__________0______________0__________0__________0__________0__________0 売上伝票: ID__年月日_____得意先_ID__消費税率 01__2008/04/30_________1______0.05 02__2008/05/01_________1______0.05 売上伝票明細: 売上伝票_ID_伝票行番号_行区分_商品在庫明細_ID_品名_____売上単価_数量 __________1_________1__通常_________________1_A_________\20,000____1 __________1_________2__返品_________________1_A(返品)______________1 __________1_________3__運賃_________________0_運賃_______\1,500____0 __________2_________1__通常_________________2_B_________\30,000____1 __________2_________2__返品_________________3_B_________\29,000____1 このような[商品マスター]、[商品在庫明細]、[売上伝票]、[売上伝票明細]が最も簡単なテーブル構造。 さて、4月30日の売上伝票には、売上行もあれば返品行もあります。 この場合、返品行は-1を持って返品とするのか?それとも+1かという問題があります。 さらには、運賃行もありますが、これは在庫管理とは無関係です。 また、5月1日の伝票では同じ商品に2つの単価が発生しています。 この場合、[売上伝票明細]では[商品マスター.ID]ではなく[商品在庫明細.ID]で記録する必要があります。 こういったシビアな管理をする場合、一体、どの在庫へ戻す商品が返品されたかを推定してユーザに確認・・・。 さて、自動更新と言いますが、4月末の締め切り処理をした場合は、[前月期首在庫数]は4月1日の在庫数。 さて、自動更新と言いますが、4月末の締め切り処理が済んでなけりゃー、[前月期首在庫数]は3月末の在庫数。 伝票のID=1、ID=2 だって、入力後に何時でも訂正される可能性があります。 一体、どうやってこの事態に対応して処理しますか? >在庫テーブルから在庫数を表示させ・・・ そもそも、上述のテーブルには[現在庫数]なんて列はありません。 期首と出し入れが判れば、[現在庫数]は求まるので当然のことです。 Q、計算を自動化して在庫数が更新されるようにしたいのですが、どうやったらいいでしょうか? A、少なくとも期首在庫数が判っていれば、全伝票を集計することで目的は達成できます。 売上伝票: ID__年月日_____得意先_ID__消費税率__要再計算 01__2008/04/30_________1______0.05__いいえ 02__2008/05/01_________1______0.05__はい その場合、少なくとも列[要再計算]は用意すべきです。 ですと、10000万点の在庫の中から数十枚の伝票に該当する在庫を更新するのは1秒以内。 VBAで売上伝票フォームが閉じられた時に、在庫更新ルーチンをコールしたらいいです。
お礼
回答ありがとうございます しかし管理もaccessも始めたばかりなのでよくわかりませんでしたすいません 自分は現在在庫を商品テーブルに作ってるので、売上入力のフォームにそこから参照して表示するようにしているので、 売れた数を入力したら、表示されてる在庫数から入力した数が引かれるという計算をフォーム上でやりたいと思いました
お礼
回答ありがとうございます。 >ただ基本的には、在庫数は売上(入出荷)テーブルで 入荷数の合計-出荷数の合計で求められます。 あーそういうことだったんですか とても参考になりました 在庫のフィールドなど一応参考書どおりに作ってるのですが、教えていただいたやり方の方が一般的なようなので検討していきたいと思います あと計算の方なんですが、サブフォームなどは使っていなくて、売上のテーブルと在庫のテーブルを組み合わせてQ売上を作って、それからフォームを作ってるので、在庫のテーブルから在庫数が出るようになっています