私はACCESS初心者です。
会社用に製品の仕入・販売数量累計数量を閲覧出来る仕組みを作成しております。
以前こちらのサイトでアドバイスを頂き、希望していた下記内容にて運用出来る様になりました。
-------------------------------------------------------------
「仕入番号」と「販売番号」が異なる場合、仕入番号で検索した時、
「仕入数量合計」-「販売数量合計」=「在庫」をクエリ表示する。
-------------------------------------------------------------
ただ、下記事情の修正を行う為、再度アドバイスを頂きたく投稿させて頂きました。
<現在の状況>
仕入番号 販売番号 仕入数量 - 販売数量 = 在庫
(1) A A 10 5 5
(2) A B 5 -5
(3) B B 5 5 0
つまり、仕入番号A、Bともに在庫は「0」個です。
<現在のテーブル・クエリ構成>
・部品情報テーブル
・ID(主キー)
・販売番号
・仕入番号
・仕入情報テーブル
・ID(主キー)
・仕入番号
・仕入数量
・販売情報テーブル
・ID(主キー)
・販売番号
・販売数量
・累計情報クエリ
・仕入数量の合計
・販売数量の合計
・在庫:([仕入数量の合計]-[販売数量の合計])
以前頂いたアドバイスにより、「仕入番号」で各テーブルを合計する事で(1)と(2)だけの場合は、仕入番号「A」の在庫は0で表示されます。
ただ、(3)が加わった際に累計情報クエリの結果が下記になってしまいます。
仕入番号 販売番号 仕入数量 - 販売数量 = 在庫
(1) A A 10 5 5
(2) B B 5 10 -5
前述しました通り、実際のところは
仕入番号Aの仕入数量合計10個-販売数量合計10個=在庫0個
仕入番号Bの仕入数量合計 5個-販売数量合計 5個=在庫0個
ですので、これをクエリ結果として表示したいのです。
この仕組みを現在運用中の為、出来るだけ現設定を残しつつ解決をしたいと考えております。
何卒宜しくお願い申し上げます。
No.7ベストアンサー
- 回答日時:
・部品情報テーブル
・ID(主キー)
・販売番号
・仕入番号
・仕入情報テーブル
・ID(主キー)
・部品_ID <---->部品情報テーブル!ID
・仕入番号
・仕入数量
・販売情報テーブル
・ID(主キー)
・部品_ID <---->部品情報テーブル!ID
・販売番号
・販売数量
このように、テーブルを変更するのは簡単。
この改善を断行しなければ、一歩も先には進めないと思います。進んでもまた後戻りは必至。
・部品情報テーブル
ID___販売番号___仕入番号
1____AAA__________AAA
2____BBB_________BBB
・仕入情報テーブル
ID___部品_ID___仕入番号___仕入数量
1_________null__________AAA___________100
2_________null__________BBB__________200
[イミディエイト]
? CNNExecute("UPDATE 仕入情報テーブル, 部品情報テーブル SET 仕入情報テーブル.部品_ID = 部品情報テーブル.ID WHERE 仕入情報テーブル.仕入番号=部品情報テーブル.仕入番号")
True
・仕入情報テーブル
ID___部品_ID___仕入番号___仕入数量
1____________1__________AAA___________100
2____________2__________BBB__________200
ここでは、SQL文実行関数を使っていますが、このSQL文をクエリにコピペすれば<更新クエリ>が出来上がります。
※仕入情報テーブル.仕入番号は、残しておいても構いません。
※ただし、部品情報テーブル.仕入番号を標準とし仕入情報テーブルでは標準を加筆修正するという仕組みが前提。
僅かに2回SQL文を実行するだけの改善です。
お勧めしておきます。
Husky2007様
丁寧なアドバイスを頂き、誠に有難うございました。
本方法にて、テーブル構成改善にトライ致します。
現在は、必要に応じてテーブル・クエリを付けたしながら、
最後の帳尻を必死に合わせている状況です。
御指摘頂きました様に、折を見て全体の見直しを行いたいと思います。
誠に有難うございました。
No.6
- 回答日時:
>(1)部品Aと部品Bはまったく同じ部品です
単品の在庫なんですか?そんなのでいいいの?
何度も同じようなことを書かれていますが
その説明をよくみてください、説明の中に時間経過があるでしょ
>(2)顧客1に対して、「仕入番号Aで10個」仕入れ、「販売番号Aで5個」
>販売しました。(当方在庫5個)
その後
>(3)顧客2に対して、「仕入番号Bで5個」仕入、「販売番号Bで5個」完売
>しました。
>(4)顧客1が在庫過多の為、「仕入番号Aの残り5個」を、顧客2に対して「
>販売番号Bで5個」販売しました。
のはずですよね
なのに顧客2が顧客1の後だという情報がテーブルにないのです
また顧客2が5個しか注文していなかったら
仕入番号Bの5個のほうを渡し、それより古い仕入番号Aのほうを残すのですか?
顧客Bの注文が6だったら普通は古い仕入Aの5個と、Bの1個を販売し
仕入Bの4個を残しますね
で
翌日顧客Cから10個の注文が入ったら、不足している6個以上を発注し
古いBの残り4個と新しく仕入れたCの中の6個を販売します
今のテーブル構造じゃこういうことが出来ません
つまり今のやり方では出来ないという結論になります
CHRONOS_0様
丁寧なアドバイス頂き、誠に有難うございました。
ご指摘を頂きました通り、現在のテーブル構成では今後の管理が難しいと感じております。
現在はテーブルを無理やり組み合わせて、帳尻だけを合わせている現状です。
今後のために、折を見てテーブルの見直ししたいと考えております。
誠に有難うございました。
No.5
- 回答日時:
現在のテーブル構成では無理です。
なぜならば、販売情報には 販売番号しか存在しません。
実際に部品情報に、相互に重なり合ったものは登録できるでしょう。
IDが主キーなので
ID 販売番号 仕入番号
1 A A
2 A B
3 B A
4 B B
でも、販売情報の販売番号Bで、この部品情報テーブルを見ると
ID 3,4のデータ 2件が対象となり、どちらかは識別できません。
判断する情報が無いので、不可能ですね。
販売情報に、例えば 仕入番号Aの販売番号Bの物を販売したときに、
部品情報のID 3 も合わせて格納するように変更すれば可能です。
(部品情報 ID=3の情報さえあれば 販売番号B自体も持つことも無いのですが・・)
残念ながら、テーブルの見直しが必要ですね。
kurodai2様
いつも丁寧なアドバイスを頂き、誠に有難うございます。
現在、必要な状況に迫られてからテーブル・クエリを追加している状況であります。
御指摘を頂きました通り、テーブル(及び全体)の見直しを図りたいと考えております。
本件に関しましては、部品情報IDを「販売情報入力時」に参照出来る様、別の方からアドバイスを頂いた方法でトライ致します。
誠に有難うございました。
No.4
- 回答日時:
質問を良く見ていたら・・・疑問が
この例は、現実でしょうか?
(2) A B 5 -5
(3) B B 5 5
もしそうだとしたら
販売番号 Bに対する仕入れ番号は A,Bの2種類が存在することになります。
販売情報の販売番号からでは、仕入番号を特定することは出来ないですね。
販売情報に登録する際に 同じ販売番号Bでも
仕入番号がAか、Bか識別できるような項目も設けないと
このままでは無理です。
この回答への補足
アドバイスを頂き、誠に有難うございます。
私の投稿内容が不明瞭な為、皆様にお手数をお掛けし申し訳ございません。
私の意図はKirodai2様御指摘の通りでございます。
>販売番号 Bに対する仕入れ番号は A,Bの2種類が存在することになります。
>販売情報の販売番号からでは、仕入番号を特定することは出来ないですね。
>販売情報に登録する際に 同じ販売番号Bでも
>仕入番号がAか、Bか識別できるような項目も設けないと…
現状を説明させて下さい。
(1)部品Aと部品Bはまったく同じ部品です。
(2)顧客1に対して、「仕入番号Aで10個」仕入れ、「販売番号Aで5個」販売しました。(当方在庫5個)
(3)顧客2に対して、「仕入番号Bで5個」仕入、「販売番号Bで5個」完売しました。
(4)顧客1が在庫過多の為、「仕入番号Aの残り5個」を、顧客2に対して「販売番号Bで5個」販売しました。
その後、累計情報クエリで集計したところ、投稿欄の結果となりました。
この時、販売情報テーブルの販売番号では無く、部品情報テーブルの仕入番号から算出する仕組みとなっております。
仕入番号 販売番号 仕入数量 - 販売数量 = 在庫
(1) A A 10 5 5
(2) B B 5 10 -5
御指摘の通り、販売番号Bに仕入番号AとBを識別させ、集計の際に、在庫表示を「0」としたいのです。
度々のお願いで大変恐縮ではございますが、
何卒お力添えを頂けます様、お願い申し上げます。
No.3
- 回答日時:
前回のクエリ3と同じことになるのですが、販売情報テーブルの販売番号で集計して販売数量を求めてはいけないです。
販売情報テーブルに、販売番号で部品情報テーブルを結合し、部品情報テーブルの仕入れ番号でグループをとって 販売数量を集計するようにしてください。
結果:仕入れ番号ごとの販売数量が取得できます。
No.2
- 回答日時:
累計情報クエリで抽出条件を[仕入番号]=[販売番号]とすればとりあえず解決すると思います。
No1の方もおっしゃっていますが、在庫管理をするためには、入庫と出庫をひとつのテーブルで管理したほうが良いような気もします。 棚卸とか、在庫管理とかも行うのであれば、そういう方向で考えたほうが処理が楽ですよ。
No.1
- 回答日時:
テーブルの作り方がおかしいからうまく行かないのでは
普通はどの部品を(何時)いくら仕入れた、(何時)いくら販売した
というようなテーブルを作りますね
各テーブルはどのようにリレーションしているのでしょうか?
まさか主キーのIDじゃないでしょうね
それだと3つのテーブルはすべて1対1のテーブル
すなわち、ひとつのテーブルにすることが可能なものになってしまいますよ
それともIDは関係なく仕入と販売を多対多の関係にあるとみなして
部品情報というのが中間テーブル?
やりたいことはA仕入れで10個入り、B仕入で5個入荷
A販売で5個売れ、B販売で10個売れた
これを仕入のロットごとにFIFOで消しこみしていきたいということのようですが
そうなると日付を現すフィールドが絶対に必要になってきます
>この仕組みを現在運用中の為、出来るだけ現設定を残しつつ解決をしたい
これはちょっと無理みたいですね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
- スーパー・コンビニ 一斉値上 スーパーの食料品 値上や単価の仕組みは? 4 2022/06/01 16:18
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- メルカリ スタバのドリンクチケット(写真)がメルカリやPayPayフリマで大量販売されているのですが、その販売 1 2023/06/18 07:29
- 電気・ガス・水道 ノーリツ瞬間給湯機(GQ-2037WS)凍結により水量調整弁の所のプラスチックの部分より水漏れが発生 1 2022/11/29 23:30
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- 法学 ネット通販 民法95条 錯誤の無効による支払い義務について 3 2023/02/07 14:28
- Excel(エクセル) エクセル count関数で出てきた数だけの行数をリンクで参照する 3 2022/08/10 12:02
- 消費税 消費税の納税額の計算 1 2023/02/19 18:12
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT * FROM `生徒名簿` INNE...
-
Accessで別テーブルの値をフォ...
-
〜のような結果を出すためのSQL...
-
access 請求番号の自動採番
-
アクセスで「空き番」の確認
-
条件をつけて日付の古い行を抜...
-
Accessでのレコード存在チェック
-
最新の日付とその金額をクエリ...
-
Accessで一致したデータを表示...
-
ACCESSでVBAを用いて自動的に番...
-
MAX関数と複数問い合わせ?
-
【アクセスVBA】テーブルにフィ...
-
SQL文を勉強し始めたのですが質...
-
【Access】選択クエリのグルー...
-
sqlで質問です。 Aテーブルの登...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
レコードが存在しなかった場合
-
select insertで複数テーブルか...
-
select句副問い合わせ 値の個...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessで別テーブルの値をフォ...
-
access 自動採番 年が変わる...
-
最新の日付とその金額をクエリ...
-
Accessでのレコード存在チェック
-
【アクセスVBA】テーブルにフィ...
-
アクセスで「空き番」の確認
-
vba 直前の操作はキャンセルさ...
-
条件をつけて日付の古い行を抜...
-
質問です。 下記のテーブルとデ...
-
【Access】選択クエリのグルー...
-
[Access]異なるレコード間の文...
-
Access:抽出して、色をつけたい。
-
Access 文字+年ごとの自動採番
-
Accessで日付が変わると番号が...
-
access 自動採番 「10-AA-000...
-
Recordset.FindFirstについて
-
ACCESSでの行番号の自動採番
-
access2003で学籍番号から生徒...
-
【SQL】existsでの商演算
-
サイベースには、オラクルのROW...
おすすめ情報