• 締切済み

access で計算結果を表に代入する方法

3つのテーブルがあります。T商品(商品コード、商品名、単価)、T明細(伝票番号、商品コード、数量)、T伝票(伝票番号、昨年度合計) Q売上でT商品、T明細から売上が計算できます。 Q伝票合計 でQ売上から伝票番号ごとに合計が計算できます。 ここで、 Q伝票合計の結果をT伝票に代入して昨年合計との差を算出することができれば、方法を教えてください。 T商品(商品コード、商品名、単価) 001 バット 10000 002 ボール 1000 003 ベース 4000 T明細(伝票番号、商品コード、数量) D0801 001 4 D0802 002 10 D0801 002 20 D0801 001 20 T伝票(伝票番号、昨年度合計) D0801 100000 D0802 300000 D0803 400000

みんなの回答

  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.3

Q伝票合計 をデザインモードで開いて、SQLビューで見てみましょう。 (クエリーの中身は、実はこんなものなのです。  ここが分からないとなると、掲示板ではなかなか伝え切れません。  ACCESS入門書を購入してください。  SQLビューで見てみれば、No2の回答がなんとなく分かると思います。) それをここに提示しましょう。 そうすればさらに回答が付くでしょう。

beans01
質問者

お礼

みなさんありがとうございました。 知人に聞いたところは次の通りです。 この問題は元のテーブルを書き換える問題で「アクションクエリ」といいます。 参考図書として、Access 2010 応用 日経BP社 を紹介してくれました。 Q伝票合計 でQ売上から伝票番号ごとに合計が計算できた時点で、「テーブル作成クエリ」でT伝票合計を作成します。 次いでT伝票、T伝票合計から「更新クエリ」でT伝票 上に合計を代入することができます。 ここでは詳細は説明していませんがこの参考図書で、「テーブル作成クエリ」、「更新クエリ」を使って当初の目的を簡単に達成することができました。

回答No.2

select T伝票.伝票番号 as 伝票番号, T伝票.昨年度合計 as 昨年度合計, X.売上合計 as 売上合計, iif(isnull(X.売上合計), 0,X.売上合計) - T伝票.昨年度合計 as 昨年合計との差 from T伝票 left outer join (select T明細.伝票番号 as 伝票番号, sum(T商品.単価*T明細.数量) as 売上合計 from T商品 inner join T明細 on T商品.商品コード = T明細.商品コード group by T明細.伝票番号) as X on T伝票.伝票番号 = X.伝票番号 ※T明細の伝票番号はT伝票には必ず存在するとします。 実行結果 伝票番号 昨年度合計 売上合計 昨年合計との差 D0801 ¥100,000 ¥260,000 ¥160,000 D0802 ¥300,000 ¥10,000 -¥290,000 D0803 ¥400,000 null -¥400,000 だいたい、こういう感じだと思いますが、どうでしょうか?

beans01
質問者

お礼

ありがとうございました。でも、使い方が分かりません。どこかのセルにselect以下を記載すのでしょうか?あるいは、VBAの一部?

  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.1

>Q伝票合計の結果をT伝票に代入して昨年合計との差を算出する ここは、次のように考えれば自力で出来るのでは。 Q伝票合計 でQ売上とT伝票から伝票番号ごとに合計と昨年合計の差を算出する 。

beans01
質問者

補足

回答ありがとうございました。 ご指摘のとおりですが、これをアクセスで実行するには?というのが質問です。 エクセルなどでは簡単にできますが、アクセスでは簡単にはできないものですから。