• ベストアンサー

ACCESS 複数テーブルの各合計値を期間を指定して算出、閲覧する方法について

kurodai2の回答

  • kurodai2
  • ベストアンサー率38% (77/202)
回答No.4

クエリ3 SELECT 部品情報テーブル.仕入時部品番号 AS 部品番号, Sum(販売履歴テーブル.販売数量) AS 販売数量の合計 FROM 販売履歴テーブル LEFT JOIN 部品情報テーブル ON 販売履歴テーブル.部品番号=部品情報テーブル.部品番号 WHERE (((販売履歴テーブル.販売日) Between Forms!在庫数量確認クエリ!開始 And Forms!在庫数量確認クエリ!終了) And ((部品情報テーブル.仕入時部品番号)=Forms!在庫数量確認クエリ!部品番号)) GROUP BY 部品情報テーブル.仕入時部品番号; *部品情報テーブルを外部結合させています。 条件の部品番号は、部品情報の仕入時部品番号に変えています。 先の回答のクエリ4の記述に変更が必要の無いように 部品情報テーブル.仕入時部品番号 AS 部品番号 括った、仕入時部品番号には、部品番号と別名をつけています。 販売履歴の部品番号を A,B,Cの3データに分け、部品情報に A,B,Cを登録し、すべて仕入れ時部品番号:Aで確認しました。 *販売履歴の部品番号と結びつけるのは、あくまでも部品番号ですが 集計するのは、仕入時部品番号

sou51
質問者

お礼

kurodai2様 丁寧なアドバイスと設定の御確認までして頂き、誠に有難うございました。 御教示頂いた設定にて、希望の数値を取得する事が出来ました。 私のレベルではウィザードを使いながらの作業がメインとなり、 実務で使用出来るACCESS作成に限界を感じておりました。 海外での業務の為、インターネットでの学習・情報収集を行う中で こちらのサイトで熟練者の方にアドバイスを頂けて、大変光栄に感じております。 誠に有難うございました。

関連するQ&A

  • ACCESSで累計数量管理 仕入時と販売時の部品番号が異なる商品を累計管理する方法2

    私は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個 ですので、これをクエリ結果として表示したいのです。 この仕組みを現在運用中の為、出来るだけ現設定を残しつつ解決をしたいと考えております。 何卒宜しくお願い申し上げます。

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

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

  • ACCESSで累計数量管理 仕入時と販売時の部品番号が異なる商品を累計管理する方法

    私はACCESS初心者です。標題の件について皆様のお力添えを頂きたく、投稿させて頂きました。 現在の設定は下記の通りです。 仕入テーブル: ・ID(主キー) ・部品番号 ・数量 ・仕入日時 販売テーブル: ・ID(主キー) ・部品番号 ・数量 ・販売日時 累計数量クエリ: ・部品番号 ・仕入数量累計 ・販売数量累計 ・次回発注数量:([仕入数量累計]-[販売数量累計]) 各テーブルの「部品番号」をリレーションシップし、 仕入数量の累計-販売数量の累計=次回発注数という仕組みを取っています。 最近客先の都合で「販売時の部品番号が変更」される事になり、上記方法で運用が出来なくなってしまいました。 仕入時の部品番号:A 販売時の部品番号:A、B、C (3種類) 希望としましては、 仕入時の部品番号と数量累計:A 10個 販売時の部品番号と数量累計:A  5個              :B  5個              :C  1個 この時、 仕入「A10個」-販売A5個-B5個-C1個=次回発注数「-1個」 を成り立たせたいのです。 良い方法をご存知の方がいらっしゃいましたら、 是非御教示を賜りたく、お願い申し上げます。

  • 更新クエリが実行できず、困っています。

    以前こちらで、更新クエリについて教えて頂きましたが、 実行できず、困っています。 在庫クエリで計算した在庫数を、部品マスタの現在庫に代入する 更新クエリを実行すると、 「更新可能なクエリでなければなりません」とエラー表示されます。 UPDATE T_部品マスタ AS A INNER JOIN Q_在庫 AS B ON A.部品品番=B.部品品番 SET A.現在庫 = B.在庫数; と作成しました。 以下に、作成したデータベースを書き出してみます。 どこが悪いのか、ご指摘頂ければ幸いです。 よろしくお願いします。 部品分類テーブル 部品分類ID(主キー) 部品分類名 保管場所テーブル 保管場所ID(主キー) 保管場所 部品マスタテーブル(T_部品マスタ) 部品品番(主キー) 部品分類ID 保管場所ID 部品名 現在庫 入出庫テーブル 入出庫ID(オートナンバー) 日付 部品品番 入庫数量 出庫数量 入出庫テーブルを元にクエリを作る 入庫クエリ 部品品番 入庫数量の合計 出庫クエリ 部品品番 出庫数量の合計 在庫クエリ(Q_在庫) 部品品番(部品テーブル) 部品名(部品テーブル) 入庫数量の合計(入庫クエリ) 出庫数量の合計(出庫クエリ) 在庫数(nz([入庫数量の合計])-nz([出庫数量の合計])

  • Accessのテーブル結合方法

    Access2000で商品の仕入と売上の受払を一覧表にしようとしているのですがうまくいきません。 テーブルは商品仕入と、売上の2つがあって 仕入には荷受した日、商品コード、数量、仕入金額と値入金額、仕入先があります。 売上には売上した日、商品コード、レジ番号、利用者、数量、売上金額となっています。 この2つを1枚の表にして、商品コード別に在庫が動いた日、適用(売上ならレジ番号、利用者を表記して、仕入なら仕入先を明記)、仕入数量、仕入金額、値入金額、売上数量、売上金額となるようにしたいのですが、うまくいきません。 ユニオンクエリを使ったり、選択クエリで単純にならべたりしたのですが、私の知識ではどうにもならなくなりました。 よろしくご指導のほどお願いします。

  • Accessにてテーブルが異なるデータの引き算

    Access に異なるテーブルに収められているデータの「引き算」ほ方法をお教えください。 只今作成しているシステムは、簡単な在庫管理システムです。 今後、拡張していくこともあり得るという前提で各テーブルを作成しました。 作成したテーブルは以下のとおりです。 仕入先テーブル「仕入先ID・仕入先名・フリガナ・〒・住所1・住所2・TEL・FAX」 材料テーブル「材料ID・材料名」(単価はその時々で変わってくるのであえてここでは設定していません) 仕入テーブル「仕入ID・日付・仕入先ID・材料ID・仕入数量・単価」 払出テーブル「払出ID・日付・材料ID・払出数量」 在庫確認クエリにて以下の設定を行いました。 材料テーブルより「材料ID・材料名」 仕入テーブルより「仕入数量」 払出テーブルより「払出数量」 を設定し演算にて「在庫: Sum(Nz([仕入数量],0)-Nz([払出数量],0))」を入力しました。 データシートビューにて確認したところ、お互い発生した回数分だけ足されてしまい正確な在庫数量が表示されません。 例 ==================== 9/1 仕入数量 100 9/2 払出数量 50 9/3 仕入数量 100 9/4 払出数量 50 9/5 仕入数量 100 ==================== とした場合に、仕入数量600 払出数量300 となってしまいます。 以下は「SQLレビュー」の内容です。 SELECT 材料.材料ID, 材料.材料名, Sum(仕入.仕入数量) AS 仕入数量の合計, Sum(払出.払出数量) AS 払出数量の合計, Sum(Nz([仕入数量],0)-Nz([払出数量],0)) AS 在庫 FROM (材料 INNER JOIN 仕入 ON 材料.材料ID = 仕入.材料ID) INNER JOIN 払出 ON 材料.材料ID = 払出.材料ID GROUP BY 材料.材料ID, 材料.材料名; 解決方法をご享受くださいますようよろしくお願いいたします。

  • Accessで期間指定の売上合計と順位指定のクエリ

    Accessのクエリの質問です。 (1)期間を指定した、顧客の売上を合計。 (2)その順位を出し、1位~100位や250位などの順位を指定した抽出をしたいです。 (1)期間指定の売上合計はできています。 (2)の順位をDCountでしましたが、金額(集計:合計)にしているためか構文エラーがでます。 よろしくお願い致します。 ------------------------------------------------ 2つのテーブルから、Q_売上(クエリ)を作成しました。 tbl顧客 顧客番号 顧客名 tbl販売 販売番号 日付 顧客番号 金額 Q_売上 日付(集計:Where条件) 顧客番号(集計:グループ化) 顧客名(集計:グループ化) 金額(集計:合計) 日付の抽出条件は、 Between [開始] And [終了] としています。 ------------------------------------------------

  • Accessで計算式を利用した在庫期間の算出方法について質問です。

    OS XP Access ver.2003 ・在庫の保有期間を算出したいです。 ・元になるデータは入庫月と現在月で、形式はどちらも「yyyy/mm(年月)」です。  たとえば、入庫月「2008/12」現在月「2009/02」です。  上記の保有期間は「入庫月」と「現在月」の間に存在する期間を1月(ひとつき)とすると、「1」と算出させたいです。 ・入庫月と現在月はDBより抽出しておりデータ型は数値型で、テーブルのプロパティ変更はできません。 ・どのようにクエリを作成すれば、保有期間を算出できるでしょうか?

  • Access更新クエリについて教えて下さい

    アクセス超初心者です。 入庫クエリでIDごとの入庫数を合計、 出庫クエリでIDごとの出庫数を合計し、 在庫クエリで在庫数を計算しています。 (入庫クエリの入庫数の合計)-(出庫クエリの出庫数の合計) 部品テーブルがあり、現在庫フィールドを作っています。 ID 部品名 現在庫 1  AAA   10 2  BBB   5 在庫クエリの在庫数を、部品テーブルの現在庫数に 代入したいと考えています。 在庫クエリを使い、テーブル作成クエリで現在庫テーブルを作成、 現在庫テーブルから更新クエリで、部品テーブルの現在庫数を 更新できるのではないかと考えたのですが、 つまづいてしまいました。 現在庫テーブル ID 在庫数 現在庫テーブルの在庫数を、IDごとに部品テーブルの現在庫に 置き換えることは可能ですか? また、その他よい方法がありましたら、教えて下さい。 ご指導のほど、よろしくお願いします。

  • 【SQL】指定期間の合計、MAX値取得

    レンタルビデオ店や図書館で指定日範囲内の、貸出本数の合計の最大値を取得したいです。 ※○月は○日が貸出ている本数が一番多かった… テーブル上では8桁の日付と貸出本数を持っています。 例えば、下記データがテーブルに登録されている場合に、 where文で'20130101'~'20130131'と期間を指定すると'13'が抽出されます。 1月4日が13本貸出中で、指定期間内で一番貸出本数が多いからです。 貸出日/返却日/本数 ------------------------------------------ 20130101/20130104/4 20130102/20130105/6 20130104/20130108/3 20130106/20130109/8 20130110/20130114/5 ------------------------------------------ 調べてみたのですが、指定日の最大値取得は見つかりましたが、指定期間での抽出方法がわかりませんでした。 使用環境はSQLServerです。 ご協力、お願致します。