販売管理などにおける売上高の計算においては、商品ごとに課税・非課税を区分してそれぞれの金額を計算した上で、それらの合計金額を画面に表示したり請求書に印刷したりしたい場合があります。そのようなときのクエリならびにフォームの作り方です。
- ここでは、例として次のような2つのテーブルを用意するものとします。
- 【売上明細テーブル】
- 売上のあった商品コードならびに数量を保存したテーブル
- 【商品マスタテーブル】
- 商品ごとの商品名や単価、課税区分などのマスタデータを保存したテーブル
課税区分はYes/No型とし、Yes(True)ならその商品は課税、No(False)なら非課税とします。
- 続いて、2つのテーブルを結合したうえで、さらに課税商品だけの合計金額ならびに非課税商品だけの合計金額を求めるクエリを作成します。
SQL文では次のようになります。
SELECT 売上明細.商品コード, 商品.商品名, 売上明細.数量, 商品.単価,
[数量]*[単価] AS 金額, 商品.課税,
IIf([課税],CCur([金額]*1.05),Null) AS 課税金額,
IIf(Not [課税],[金額],Null) AS 非課税金額
FROM 売上明細
LEFT JOIN 商品 ON 売上明細.商品コード = 商品.商品コード;
ここでのポイントは、課税商品だけの合計金額と非課税商品だけの合計金額を求める2つの演算フィールドです。このクエリの段階で、それらを分離して、それぞれの金額を求めるようにします。
- 「IIf([課税],CCur([金額]*1.05),Null)」とすることによって、その商品が課税商品なら金額(単価×数量)の"税込金額"が求められます。
- 一方、「IIf(Not [課税],[金額],Null)」とすることによって、その商品が非課税商品なら"税額を加算しない金額"が求められます。
- 上記のクエリを元にフォームを作成します。
詳細セクションについては普通の作り方ですが、総合計金額の出力用としてフォームフッターにテキストボックスを配置し、そのコントロールソースプロパティを次のように設定します。Sum関数の中に記述されているのは、クエリの演算フィールドの名前となります。
=Sum([課税金額])+Sum([非課税金額])
これによって、消費税が加味された「課税金額」の合計と、そうでない「非課税金額」の合計とが加算され、総合計金額が画面に表示されます。画面上、必要がなければ、詳細セクションの課税金額と非課税金額のテキストボックスは抹消してもかまいません。
プロパティシート:
実行結果の画面:
|