Accessで帳簿などを作成し、金額を集計したいということは良くあることかと思います。
例えば、お小遣い帳を例とした場合にメインフォームには何年何月といった大項目の情報を、サブフォームには日ごとの内訳情報を表示できるように作成することが多く、また、メインフォームにサブフォームで表示される内訳金額の集計値を表示させたいといったニーズもあります。
そこで、今回はサブフォームに表示されている内訳金額を集計し、合計金額はメインフォームに表示させる方法を紹介します。
DSum関数について
今回の実装においてはDSum関数を用いることが簡単な方法となりますので、まずはDSum関数について見ていきましょう。
DSum(expr, domain [, criteria])
表1 DSum関数の引数について
引数 | 説明 |
expr | 必須。 値の合計を求める数値フィールドを識別する式。 テーブルやクエリ内のフィールドを識別する文字列式であることもあれば、対象フィールド内のデータに対して計算を実行する式である場合もあります。 |
domain | 必須。 定義域を構成するレコード セットを識別する文字列式。 テーブル名の場合もあれば、パラメーターを必要としないクエリのクエリ名の場合もあります。 |
criteria | 省略可能です。 DSum関数が実行されるデータの範囲を制限するために使用される文字列式。 WHERE句に相当する部分です。 |
DSum関数を用いると特定のテーブルやクエリのフィールドに対して、条件に応じた値を集計した結果を返してくれます。この関数を用いて、メインフォームにサブフォームに示された金額の集計値を表示させるようにしてみましょう。
サンプルの作成
サンプルの作成に際しては、フォームとして「F_メインフォーム」と「F_サブフォーム」を作成します。「F_サブフォーム」のレコードソースプロパティには「T_費用」テーブルを設定し、また既定のビュープロパティには「帳票フォーム」を設定します。
「T_費用」テーブルには次のフィールドを設定します。
表2 「T_費用」テーブルのフィールド名とデータ型
フィールド名 | データ型 |
費用発生年月日 | 日付/時刻型 |
費用 | 通貨型 |
「F_サブフォーム」の詳細セクションに「費用発生年月日」と「費用」フィールドを追加します。
続いて、「F_メインフォーム」に「F_サブフォーム」を埋め込み、「F_メインフォーム」の下段に内訳費用の合計が表示されるようにテキストボックスを1つ配置します。
ここまでで基本的な準備は完了しましたので、DSum関数を用いて集計値をどのように表示させるかを見ていきましょう。
DSum関数の適用方法
今回の例では、「T_費用」テーブルの「費用」フィールドの値の集計結果を「内訳費用合計」テキストボックスに表示する設計とします。
そこで、図1でも示した「内訳費用合計」テキストボックスのコントロールソースに以下の式を入力します。
=DSum(“費用”,”T_費用”)
これで、「F_メインフォーム」に「F_サブフォーム」の集計値が表示されるようになります。
「T_費用」テーブルに適当なレコードを追加した後、DSum関数の表示内容を見てみましょう。実例を図2に示します。
このように、「F_サブフォーム」で示された「費用」の値の合計値が「F_メインフォーム」の「内訳費用合計」テキストボックスに表示されていることが分かります。
以上で示したように、DSum関数を用いてメインフォームにサブフォームの集計値を示すことができました。上の例では、単純な集計結果としていますが、DSum関数のcriteria引数にWhere句に相当する内容を記載することで、条件に応じた集計値を計算し表示させることも可能となりますので、試してみましょう。
DSum関数に条件を加えた場合
例として、先のサンプルのDSum関数を以下のように書き換えます。
=DSum(“費用”,”T_費用”,”費用発生年月日 > #2021/1/1#”)
この式は、「費用」フィールドの値の内「2021/1/1」より後のレコードを集計することとしています。
その結果どのような画面表示となるかを図3に示します。
図3に示すように、DSum関数の条件に「”費用発生年月日 > #2021/1/1#”」を加えたことで「2021/1/1」より後のデータを集計することができ、その合計値が「21,790」と表示されるようになりました。
このようにして、DSum関数を用いることで条件付きの集計も可能であり、また複数条件を設定することも可能なため、より効率的に集計値を示すことができます。
まとめ
今回は、DSum関数を用いてサブフォームに表示されている内訳金額を集計し、合計金額はメインフォームに表示させる方法を紹介しました。
このようなテクニックを活用することで、効率的にデータ処理を実装することができ業務効率の向上にも繋げることができますので、本記事を参考になさってください。
Access作成においては、専門書も併せて参考にしていただけると幸いです。
スポンサーリンク
コメント