#743 | 消費税額を税率ごとに集計する方法 | フォーム | |
Accessでは、”すべて”のレコード(あるいは条件抽出されたレコードの”すべて”)について合計値や平均値、最大値/最小値などの縦方向の集計を行い、クエリあるいはフォームフッター等でその集計結果を表示させるのは得意です。集計クエリを使ったり、Sum関数やAvg関数をコントロールソースとするテキストボックスを配置したりすれば簡単にできます。 一方、”すべて”のレコードではなく、レコードごとの条件に応じて”それぞれ”の合計値などを求めるにはちょっとした工夫が要ります。たとえば、売上データにおいて消費税率が「8%」のものと「10%」のものがある場合に、『8%のレコードだけの消費税額の合計』と『10%のレコードだけの消費税額の合計』を別のテキストボックスに分けて表示したいといったときです。 そのようなときには、次のようにして各テキストボックスの「コントロールソース」プロパティを設定することで対処できます。 なおここでは、本来はクエリで集計させたしまった方がよいと思いますが、「単価×数量」で各レコードの「金額」もいっしょに計算しています。また参考としてすべてのレコードの消費税額も記載します。
ここでのポイントは「IIf」関数を使うことです。8%の場合であれば、『もし消費税率が8%なら金額にその消費税率を掛け、そうでないときはゼロを掛ける(つまり8%としての消費税額はゼロ)』、10%の場合であれば『もし消費税率が10%なら金額にその消費税率を掛け、そうでないときはゼロを掛ける(つまり10%としての消費税額はゼロ)』というように分岐して計算させています。その結果、それぞれの消費税率ごとの消費税額を求めることができます。 ちなみに、すべてのレコードの消費税額はそのような条件分岐なしで計算できます。あるいは8%と10%のテキストボックスの値を単純に足し算する式でもかまいません。 フォームデザイン例: 実行例: 【補足】
上記ではフォームフッター上のコントロールで計算していますが、クエリであらかじめ分岐処理しておくこともできます。■クエリのデザイン ■クエリのSQL SELECT商品コード,数量,単価,[単価]*[数量]AS金額, [金額]*IIf([消費税率]=0.08,[消費税率],0)AS[消費税額8%], [金額]*IIf([消費税率]=0.1,[消費税率],0)AS[消費税額10%] FROM売上明細; この場合、クエリ側で各種演算がすでに済んでいますので、フォームフッターのコントロールソースは下記のようにシンプルになります。
|
|||
|
Copyright © T'sWare All rights reserved |