• ベストアンサー

access 在庫計算

今accessで在庫管理をしています 売上入力のフォームに、在庫テーブルから在庫数を表示させて 売却数を入力したついでに自分で計算して在庫数を変更しています 計算を自動化して在庫数が更新されるようにしたいのですが、どうやったらいいでしょうか?

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

入力フォームの中にサブフォームで在庫テーブルが表示されているのでしょうか。 ボタンを作成して、マクロビルダーで 値の代入  アイテム サブフォームの在庫数 式    サブフォームの在庫数-メインフォームの出荷数 多分こんな感じ?  [Forms]![在庫]![在庫数].[Form]![在庫数]-[Forms]![売上]![売上数] *式ビルダー利用してそちらのフォームに合わせてみてください。 としてボタン押したら在庫が減るようには出来ると思います。 ただ基本的には、在庫数は売上(入出荷)テーブルで 入荷数の合計-出荷数の合計で求められます。在庫テーブルに 在庫数のフィールドをおいた場合、どの時点で計算にするかが問題になります。

beffelo
質問者

お礼

回答ありがとうございます。 >ただ基本的には、在庫数は売上(入出荷)テーブルで 入荷数の合計-出荷数の合計で求められます。 あーそういうことだったんですか とても参考になりました 在庫のフィールドなど一応参考書どおりに作ってるのですが、教えていただいたやり方の方が一般的なようなので検討していきたいと思います あと計算の方なんですが、サブフォームなどは使っていなくて、売上のテーブルと在庫のテーブルを組み合わせてQ売上を作って、それからフォームを作ってるので、在庫のテーブルから在庫数が出るようになっています

その他の回答 (1)

noname#140971
noname#140971
回答No.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で売上伝票フォームが閉じられた時に、在庫更新ルーチンをコールしたらいいです。

beffelo
質問者

お礼

回答ありがとうございます しかし管理もaccessも始めたばかりなのでよくわかりませんでしたすいません 自分は現在在庫を商品テーブルに作ってるので、売上入力のフォームにそこから参照して表示するようにしているので、 売れた数を入力したら、表示されてる在庫数から入力した数が引かれるという計算をフォーム上でやりたいと思いました

関連するQ&A

  • 在庫管理の仕組みで質問

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

  • ACCESSで在庫管理 備考欄の組み込み方?

    ACCESSで在庫管理を始めました。 なんとか在庫管理だけはできるようになりましたが、 備考欄を設けたら、備考を入れたものは数が別でカウントされるように なってしまいました。 今の在庫管理の状態は <テーブル> ・商品ベース(商品ID、商品名が入っている) ・入出庫明細 <フォーム> ・入荷票(入出庫明細テーブルに入力される) ・出荷票(入出庫明細テーブルに入力される) <クエリ> ・在庫表 ・要発注表(在庫が1以下のものだけ表示する設定) <レポート> ・在庫表(クエリの在庫表のレポート) ・要発注表(クエリの要発注表のレポート) という感じです。 フォームに商品IDを入れると、自動で商品名が表示されるようにしており(DLOOKUP)、 その下に入庫や出庫数を入力する欄、最後に備考入力欄を設けています。 たとえば、返品によって在庫が1つ増えたときに「返品」などというふうに 備考を入れたいのですが、そうすると在庫表や要発注表で 備考情報なしの物は今までの入出庫明細の合計で1行に在庫数が ずばっと出ますが、備考を入れた物はその下に同じ商品IDで 数行に出ます。 (結局最後はそれを手で計算する) 本当は、1行におさめて、備考欄を大きめにとって、そこに備考は どんどん追加されるような感じにしたいのですが、可能でしょうか? 質問の仕方も下手ですみません。 補足要求してください。宜しくお願い致します。

  • ACCESSで在庫管理を実施したい「改善希望1」

    在庫の入出庫管理をアドバイスいただき完成しました「ありがとうございます」。しかし、使って「利用者含め」いくうちに改善要望の声があがり、対応できればと思っています。 当件は、私にとって内容が濃いこともあり「分かる質問として纏められない懸念」、作成時のWEBアドレスを掲載させていただく事、お許しください。 https://okwave.jp/qa/q9659826.html [改善したいこと] その1, 改善項目:F_入出庫管理「フォーム」に入力途中「どの段階に於いても」で取りや      めた時、入力済データがクリアーになる様にしたい。 現状内容:フォーム終了させ再度フォームを立ち上げても入力データが残る。 その2, 改善項目:Q_在庫計算「更新クエリ」の実行時に発生する2つのアラートを表示さ      せない。又は、2つ目に表示されるアラート「1件のレコードが更新さ      れます」のみ表示させたい。(F_入出庫管理「フォーム」の最後の入力      フィールド「出庫数」の更新後処理「Q_在庫計算」に実行マクロを設      定) 現状内容:2つのアラート「1つ目,(更新クエリを実行すると、テーブルのデー      タが更新されます。2つ目,1件のレコードが更新されます。」表示に      よる処理工数の減を望む声の存在。 [感想と思い] 実際にアドバイスを頂きながら完成しましたが「ありがとうございます」、使っていくうちに考えていなかった場面に遭遇しました。自分だけが使うならいいですが、そうでない時の声に対しては、真摯に向き合わないといけないと感じましたした「対処スキルも無いのに勝手な言い分・・・」。何事も経験の積み重ねと言いますが、まさに痛感いたしております。しかし、私にとってAccess新分野でもあり、現時点での気になる点の解消方法へのアドバイスを希望します。 [実施したこと(考えたこと)] 実施1,失敗 F_入出庫管理「フォーム」にコマンドボタンを配して、全てのフィールド「入出庫ID、訂正(チェックボックス)、商品コード、商品名、在庫数、日付、入庫数、出庫数、計算済(チェックボックス)、メモ(個別情報入力)」に対して「値の代入(Null)」マクロを登録しました。 実施2,失敗 F_入出庫管理「フォーム」にコマンドボタンを配して「コマンドの実行(元に戻す)」マクロの登録。 実施3,考えただけ(実行スキルなし) 書き込まれたテーブルのレコードを削除、入出庫ID行を削除し新たな行を追加して、入出庫ID(オートナンバー)を書き込むマクロの作成。 以上ですが、宜しくお願いいたします。

  • アクセスでの在庫管理(在庫期間が知りたい)

    アクセスを使って商品の在庫管理を行おうと試行錯誤しています。 1.入庫テーブル(商品名、入庫日、入庫数)に入力。 2.出庫テーブル(商品名、出庫日、出庫数)に入力。  これらから、商品と入庫日をロット単位とし、このように在庫を計算しています。  入庫の合計―出庫の合計=在庫 ここからネックになっているのが、在庫期間をどうあらわすかと言う点です。  通常、今日までの在庫期間は   在庫期間=今日―入庫日  によって表しています。  ここまでは出来ていますが、さらに一歩進めて  日にちを毎回指定し   指定日からの在庫期間=指定日―入庫日  のような感じで在庫期間を表示させたいのですが どのようにクエリを作ったらよいのでしょうか? このようなフローで良いのか、 参考HP等ありましたらアドバイス頂けませんか?

  • Access フォーム上で計算する方法とそれをテーブルに反映させる方法を教えてください。

    こんばんは。色々試したのですが、わかりませんでしたので質問します。 Accessのフォーム上で計算する方法とそれをテーブルに反映させる方法を教えてください。 サブフォーム入りのサブフォームの中の、「売上」と「原価」を入力すると自動的に「原価率」が表示させ、その「原価率」をテーブルに反映させたいのですが、どうしたらよいのでしょうか。 途中まで考えたのは、選択クエリ上で計算させて、それをフォームにしたら表示のみは出来たのですが、テーブルに反映させる方法までたどりつきませんでした。 どうぞ宜しくお願い致します。

  • アクセス2003でフォーム上の計算結果がテーブルに反映されない

    アクセス2003を使っているのですが、フォーム上で計算をして出た結果が、テーブル上に入力されていないのですが、何故でしょうか? フォーム上で、=IIf(IsNull([売却価格])=True,"",[売却価格]-[購入価格]-[手数料])と、計算式を立てて、利益を出しているのですが、フォーム上では、問題無く利益が出ているのですが、テーブル上に、計算結果の利益が入力されていないのですが、何故でしょうか? フォームとは別に、テーブル上でも、計算式を設定しないといけないのでしょうか?その場合は、どのような計算式になりますでしょうか?

  • 教えてアクセス2007!「在庫管理を求める方法」

    教えてアクセス2007!「在庫管理を求める方法」 アクセス2007を扱うのは初心者ですが在庫管理のデーターを作っていて フォームを開いた時に商品の在庫だけが表示される方法を教えて下さい たとえば 入荷              出荷 商品  日付 入荷数      商品   日付  出荷数 りんご 5/1  10     りんご  5/10  10 いちご 5/5  10     ばなな  5/15  10 ばなな 5/10 10     みかん  5/16  10 みかん 5/11 10 メロン 5/13 10 この場合、いちごとメロンが残ってます フォームを開いた時、残ってる商品だけを表示させたいのですが どうしたら良いでしょうか?教えて下さい。  

  • ACCESSにて・・・

    accessにて・・・ フォームには初期値としてテーブルのデータがテキストボックス等に表示されます。 本来は、変更すべき項目があれば変更して(この時点ではテーブルは更新されない)、更新ボタンを押すとテーブル更新・・・としたいのですが・・・フォームのテキストボックス等に入力した項目が入力した時点でテーブルに更新されてしまいます・・・何か設定があるのでしょうか?

  • Access97フォームで計算したものをテーブルに入力したい

    Access97で受注管理のデータベースを設計中です。 フォームのテキストボックス[税込金額]のコントロールソースに =Int([税抜金額]*[消費税率]*0.01+[税抜金額]) という式を入れました。 はたと気がついたら、基になるテーブルの[税込金額]には当然 (コントロールソースじゃなくなってしまったから)そこで 計算された値は更新されません。 テーブルにその値を更新したいのですが、そのためにはどのように すればよろしいでしょうか? 基になるテーブルに[税抜金額][消費税率][税込金額]という項目が あります。で、フォームを使用して入力時に税抜き金額を入力し、 消費税率を入力すると税込金額が小数点切り捨てで自動で入力される という風に組めればフォームの中で計算できなくてもフォームで値が 表示されればかまいません。 要領を得ない質問でスミマセン。お手数ですが教えてください。

  • 在庫数を表示させたい

    アクセスの超初心者なのです。 今、簡単な在庫管理をしようとしてるのですが、フォームで入出庫数を入力すると下のほうに在庫数を表示させたいのです。 例えば「A-1」の在庫が10個合ったとします。A-1はコンボボックスを使いたいです。 10個のうち5個出庫したとすると下のように在庫数の欄が5個と表示させたいです。説明が下手ですみません(ーー;) カタログ番号  A-1 入庫数 出庫数   5   在庫数   5

専門家に質問してみよう