• ベストアンサー

アクセスが・・・

アクセスで在庫管理をしています。 月ごとの商品在庫を知りたいのですが、クエリで [入庫-出庫+返品]と、計算式を入れると1月分はちゃんとでるのですが、2月分からはへんになるんです。 例えば リンゴが商品だとして 1月 入庫2 出庫1とすると、在庫は1になるんですが 2月 入庫0 出庫1とすると、在庫は-1になってしまうんです。 1月の在庫計をふまえた上で2月の在庫、3月の在庫と 出していくのは難しいんでしょうか?

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

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

>該当月以前の在庫数を計算させるクエリ 商品在庫を計算するクエリをコピーして前在庫みたいな名前で作るとして。 前在庫クエリの日付の抽出条件に <該当月数 で該当月より以前の入出庫を商品コードなどのキーでグループ化して前入庫数と前出庫数を合計させて前在庫:[前入庫数]-[前出庫数] で前在庫を演算させる。 商品在庫クエリにテーブルの追加で前在庫クエリを追加して商品コードでリレーションをする。前在庫のフィールドを追加する。在庫:[前在庫]+[入庫]-[出庫]+[返品]で演算させる。

その他の回答 (4)

回答No.4

一ヶ月ごとに、期首+入庫-出庫+返品で、当月の期末在庫を計算させ、一旦テーブルに書き出し、その期末在庫を、翌月の期首在庫に書き出すように組み立ててやれば良いんですよ 私がいつもやってる方法です 最初にテーブル作成クエリーで、管理表を作成したら、翌月分からは、追加クエリーで書き加えてやると良いですよ、その際、追加するクエリーと追加されるテーブルで、重複しない物だけを追加するようにクエリーを作成してやれば、同じ事をやっても、ダブル心配はありません 期末在庫を期首に持って来る方法も、同じ様な物で、管理表の期末在庫を、期首というテーブルに追加するようにして、日付もDATEADD関数を使用して、1か月分進めて記載させれば問題なく使用できます

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

>[入庫-出庫+返品]と計算式・・2月分からはへん >2月 入庫0 出庫1とすると、在庫は-1になってしまうんです 2月以前の在庫数が無ければ-1に当然なります。 2月の在庫を出す場合は1月末時点の在庫数を出して加算しなければダメですよね。 クエリでやりたいのならば演算させる該当月以前の在庫数を計算させるクエリを作り該当月の在庫を演算するクエリに追加して [入庫-出庫+返品]ではなく [該当月以前在庫数クエリ]![在庫数]+入庫-出庫+返品 にしないとダメですよね。 または他の方が云うように各月末の在庫数のテーブルを作るとかしないと。とにかく前月末在庫数を加えないと。

yupa
質問者

補足

回答ありがとうございます。 >クエリでやりたいのならば演算させる該当月以前の在庫数を計算させるクエリを作り該当月の在庫を演算するクエリに追加して [入庫-出庫+返品]ではなく [該当月以前在庫数クエリ]![在庫数]+入庫-出庫+返品 にしないとダメですよね。 出来ませんでした(; _ ;) 該当月以前の在庫数を計算させるクエリを作る際の計算式ってどうすればいいのでしょう?? また、回答お願いします。<(_ _)>

noname#102878
noname#102878
回答No.2

私がやるとすれば、月次処理や年次処理を入れるかな。 メインのテーブルには当月の入出を記録するとして、月次処理によって一度全部を別のテーブルに吐き出す。 そして前月からの繰越在庫だけをメインテーブルへ「繰越」として持ってくる。 そんな感じ。 今のままで行うなら、「○月の在庫」っていうふうに月で絞らずに、「現時点での在庫」というふうに全取り引きレコードから在庫を算出すれば正しい数が出ますね。 取り引き数が多さにもよりますが、過去・現在・未来の取り引きを1つのテーブルに記録していく現在の方法ではいつかは重くなってしまいますね。

yupa
質問者

補足

回答ありがとうございます。 >私がやるとすれば、月次処理や年次処理を入れるかな。 メインのテーブルには当月の入出を記録するとして、月次処理によって一度全部を別のテーブルに吐き出す。 そして前月からの繰越在庫だけをメインテーブルへ「繰越」として持ってくる。 そんな感じ。 具体的に教えてくれませんでしょうか(; _ ;) 月次処理や、年次処理の仕方がわからないんですぅ。

回答No.1

重くなりますけどね、前月の期末在庫を計算させるクエリーを作成して、その抽出条件に、指定した期間から、1ヶ月前を、Dateadd関数を使用してパラメーター指定してやり、月末算を加算する事で可能になります。 もっと軽くするのであれば、月末ごとに一旦更新するために、テーブルに書き出すようにしてやると、軽く出来ますよ。

yupa
質問者

補足

早速の回答ありがとうございます。 >もっと軽くするのであれば、月末ごとに一旦更新するために、テーブルに書き出すようにしてやると、軽く出来ますよ と、ありますが超超初心者なので具体的に教えてくれませんでしょうか?宜しくお願いします。

関連するQ&A