お世話になっております。
以下の点についてアドバイスをお願いします。
・「製品テーブル」、「売上テーブル」と「生産テーブル」を作って、在庫の累計計算をしたいと
考えております。
・作成したテーブルに基づき、添付画像にあるクエリを作成しました。
・このクエリで以下の数式を入力して在庫の累計計算をしようとしたのですが、エラーがでて、計算式の入力を
完了できません。数式をどのように変更すればよいかアドバイスをお願いします。
DSum(“[生産数]-[売上数]”,”B”,”製品コード=”&[製品コード]&”AND年月<='"&[年月]&"'")
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
の続きですね
DSUM関数は使ったことがありません。
改めて見直しましたが、製品毎にグループ化する方法がわかりません。
VBAが必要です。
製品テーブル、在庫テーブル、中間テーブルの3つ。
添付されたリレーションは確かに直列ですが問題がありそうです。
クエリーは在庫テーブルを基にして、売上クエリーと生産クエリーの2つ作成します。
売上クエリー
製品コード
年月
期初在庫数(規定値=0)
売上数(規定値=0)
売上金額(規定値=0)
生産クエリー
製品コード
年月
生産数(規定値=0)
製品テーブル(主キー)
製品コード
製品名
在庫テーブル(データの重複を避けるため主キーは製品コードと年月)
製品コード
年月
期初在庫数(規定値=0)
売上数(規定値=0)
生産数(規定値=0)
期末在庫数(規定値=0)
売上金額(規定値=0)
生産金額(規定値=0)
中間テーブル(データの重複を避けるため主キーは製品コードと年月)
製品コード
繰越在庫数(規定値=0)
以下に在庫数の繰越計算のルーチンを記述します。
DoCmd.SetWarnings Trueは更新の過程を表示されます。運用時はFalseにします。
------------------------------------------------
Private Sub 在庫繰越B_Click()
DoCmd.SetWarnings True
DoCmd.RunSQL ("Update 在庫テーブル set 期末在庫数 =期初在庫数+生産数-売上数 where 年月 =月初 ;")
DoCmd.RunSQL ("Delete From 中間テーブル;")
DoCmd.RunSQL ("Insert Into 中間テーブル(製品コード,繰越在庫数) select 製品コード,期末在庫数 From 在庫テーブル WHERE 年月 = 月初 ;")
'T在庫へ追加された商品も含めてレコードを追
DoCmd.RunSQL ("Insert Into 在庫テーブル(製品コード,年月) Select 製品コード,翌月 From 製品テーブル ;")
'T在庫の当月入出庫数を0にする
DoCmd.RunSQL ("Update 在庫テーブル set 期初在庫数 = 0 where 年月 = 翌月 ;")
DoCmd.RunSQL ("Update 在庫テーブル Inner Join 中間テーブル On 在庫テーブル.製品コード = 中間テーブル.製品コード set 期初在庫数 =繰越在庫数 where 年月 = 翌月 ;")
DoCmd.SetWarnings True
MsgBox ("在庫更新完了")
End Sub
追伸
年月は日付型にして、月初日にすると何かと便利です。
月末=年月+31-day(年月+31)
翌月=月末+1
自分は参考URLを頼りにしています。
参考URL:http://www.geocities.jp/cbc_vbnet/top/nyumon.html
No.1
- 回答日時:
全体として良く設計されたテーブル構造ですが、少し、手直しを必要とする箇所もあります。
修正点1、売上や生産の履歴テーブルに売上製品コードや生産製品コードは不要。
理由、そういうコードは製品のテーブルにあれば良い。
*私の新[製品台帳]からこの二つのコードが欠落しているのはミスです。当然に、必要です。
【リレーションシップの考え方】
例示のようなリレーションシップですと、例え何らかの理由で製品台帳から製品を削除されるという事故が起きても、売上と生産の履歴は表示されます。
修正点2、少なくとも製品台帳に列[当期期首在庫]は必要です。システムの立ち上げ時には、先ず、この列の値を設定することから始めます。
修正点3、棚卸処理を行うという考えを導入するのか否か?
仮に、棚卸処理を行うということであれば、売上履歴.区分、生産履歴.区分を追加して売上や返品などを記録しておくべきでしょう。また、在庫参照の高速化を図るためには、当期売上数(又は、当月売上数)などの列を製品台帳に加えておくのも手です。
【在庫を求めるクエリ】
もちろん、質問者が意図するやり方でも現在庫は求められます。そのクエリは次のようです。
SELECT 製品台帳.ID, 製品台帳.製品コード, 製品台帳.年次期首在庫数,
DSum("売上数",
"売上履歴",
"製品台帳_ID=" & [ID] & "
AND [売上日] BETWEEN #2014/01/01# AND #2014/12/31#")
AS 当期売上数,
DSum("生産数",
"生産履歴",
"製品台帳_ID=" & [ID] & "
AND 生産日 BETWEEN #2014/01/01# AND #2014/12/31#")
AS 当期生産数
FROM 製品台帳;
棚卸処理とは、通常は、このDSum部分を月単位で(VBAで)行います。「先月末の在庫数は?」というリクエストに応えるための方策です。
私が、気が付いた点は以上です。
お世話になっております。
懇切なアドバイスに深謝申し上げます。
いただいた内容で作成します。
不明点があれば改めてご連絡させていただきます。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
iPhone 15を昨日購入し、今日の...
-
不良品を交換したいけど在庫が...
-
メルカリ無在庫物販
-
販売店で使える 必須英会話の...
-
何だか最近心が狭くなってきて...
-
売上原価がマイナスの場合の処...
-
在庫管理について
-
製造業ですが、廃棄処分(資材...
-
解き方がわかりません。力を貸...
-
Excelで在庫管理の表を作りたい
-
在庫引当とは?
-
「数を把握する」って英語でな...
-
「ご発注ありがとうございます...
-
中3日の意味
-
ランク別のコースの名前、つけ方
-
「照合」と「突合」は同じ意味...
-
付加価値・相乗効果の意味は?
-
カートンという単位
-
チェーンストア統一伝票について
-
異なるメーカーの油性ペンキの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
現在のセリアかダイソーで、SD...
-
ヨドバシカメラのネット通販で...
-
マクロで最終行から上に検索を...
-
製造業ですが、廃棄処分(資材...
-
生産完了品と在庫限定品の違い
-
解き方がわかりません。力を貸...
-
家電量販店の家電は、支払いし...
-
ACCESS2013でバーコードリーダ...
-
コンビニに在庫確認の為に何度...
-
在庫日付順に先入先出しをエク...
-
不良品を交換したいけど在庫が...
-
在庫月数の求め方について
-
海外現地法人に日本法人所有の...
-
エクセルの数式について教えて...
-
在庫管理について
-
売上在庫の評価減後の取扱い
-
何だか最近心が狭くなってきて...
-
iPhone 15を昨日購入し、今日の...
-
VBA内でSQL(UPDATEをループ処...
-
アニメイトに電話して在庫を確...
おすすめ情報