Accessの便利な関数Dsum・DCount|みどシステム工房
Accessの便利な関数DSum・DCount
条件付きで、データの数値を足したりデータの個数をカウントする処理は多いです。
そのようなとき、DSum・DCount関数を知っていると、とても便利です。

アンザボレゴ州立公園
アンザボレゴ州立公園
【アメリカ合衆国カルフォルニア州】


はじめに

Accessは、複雑な計算する手順が書かれている便利な関数を装備しています。

関数のおかげで長々とコードを書く必要がありません。

いろいろとある関数のうち、フィールドの数値を加算するSumや値が入っているフィールドの数を数えるCountなどあります。

また、それに似たような関数で、条件を設定することができる便利なDSumやDcountもあります。

【AD】

SumとCount

SumとCountは、クエリ、フォーム、レポートで使うことができます。

Sumは、指定したフィールドの全ての数値の合計を返し、Countはデータのあるフィールドの数を数えます。

フィールドに値がないとき、Sumは、そのフィールドを計算しません。

書式は、次のようになります。

  • Sum([フィールド名])

  • Count([フィールド名])

これらは、フォームやレポートに合計金額や件数を表示させるときに使います。

DSumとDcount

DSumとDCountは、定義域集計関数といい、設定した条件に従って、DSumは数値の足し算、DCountはデータのカウントするもので、クエリ式、マクロ、演算コントロール、VBAに設定できます。

DSumは、指定したフィールドを加算し、Dcountは、データのあるフィールドをカウントしますが、両者とも条件を付けて加算やカウント処理することができます。

書式は次のようになります。

  • DSum("[フィールド名]","[テーブル]","[条件]")

  • DCount("[フィールド名]","[テーブル]","[条件]")

「テーブル名」のところには、クエリ名も設定できます。

これらの関数は、条件を設定できるので使用する用途も広がります。

例えば、条件に日付指定して、DCount関数でデータの有無を確認して、データがあれば売上計算(DSum)するような使い方をします。

トリッキーな条件設定

条件設定の記述が引数の種類によって、特に変数のとき記述方法が違うのでメモします。

条件を直接設定するには、文字、数字、日付など直接記述します。

例えば、「テスト結果」テーブルの「点数」が「100」のフィールドの数をカウントするには、

DCount("[点数]","[テスト結果]","点数=100")

というように記述します。

とてもシンプルですが、これは、引数が数字のときだけで、DSum/DCountとも、文字と日付はそれぞれ決まった記号で囲みます。

引数 記号
(なし) 数値型フィールド 100
' ' テキスト型フィールド 数学
#  # 日付型フィールド #2019/01/01#

Accessでシステムを構築するとき、条件を固定することは稀で、フォーム上に設置したテキスト枠に入力した値を参照させ、変数として処理します。

変数の指定方法は、フォーム上の変数を入れるテキスト枠の名称を関数の条件に設定しますが、その指定方法がちょっと間違えやすいところで、間違えるとAccessに怒られイライラするところです。

フィールド型 引数の記述
数値 "[フィールド名]=" & [テキスト枠名] Dcount("点数","テスト結果","点数=" & [テキスト枠名])
テキスト型 "[フィールド名]='" & [テキスト枠名] & "'" DCount("科目","テスト結果","科目= '" & [テキスト枠名] & "')
日付型 "[フィールド名]= #" & [テキスト枠名] & "#" DCount("氏名","テスト結果","日付= #" & [テキスト枠名] & "#")

フィールドの型によって条件の記述方法が違いますが、違っていればエラーで表示されるので書式を確認してください。

定義域集計関数は、処理速度が遅いと言われていますが、いろいろな場面に使え、とても使いやすい関数です。

【AD】