DSum 関数

DSum 関数を使って、指定したレコード セット (domain) 内の値セットの合計を計算できます。 Visual Basic for Applications (VBA) モジュール、macro、クエリ式、または calculated control で、DSum 関数を使用します。

たとえば、クエリ内の集計フィールド式で DSum 関数を使って、一定の期間中に特定の従業員が売り上げた販売合計金額を計算できます。 また演算コントロール内で DSum 関数を使って、特定の製品で現在達成した販売合計額を表示することができます。

構文

DSum ( expr , domain [, criteria] )

DSum 関数の構文には、次の引数があります。

引数

説明

expr

必須。 値の合計を求める数値フィールドを識別する式。 テーブルやクエリ内のフィールドを識別するstring expressionであることもあれば、対象フィールド内のデータに対して計算を実行する式である場合もあります。 expr では、テーブル内のフィールド、フォームのコントロール、定数、または関数の名前を指定することができます。 expr で関数を指定する場合、その関数は組み込みでもユーザー定義でもかまいませんが、別の定義域の集計関数または SQL 集計関数は使えません。

定義域

必須。 定義域を構成するレコード セットを識別する文字列式。 テーブル名の場合もあれば、パラメーターを必要としないクエリのクエリ名の場合もあります。

criteria

省略可能です。 DSum 関数の実行対象となるデータ範囲を制限する文字列式。 たとえば、criteria は多くの場合、WHERE という語句がないだけで、SQL 式の WHERE 句と同等です。 criteria を省略した場合、DSum 関数は、定義域全体に対して expr を評価します。 criteria に含めるすべてのフィールドは、domain 内のフィールドであることも必要です。そうでない場合、DSum 関数は Null を返します。


解説

criteria 引数を満たすレコードがない場合、または定義域にレコードが含まれていない場合、DSum 関数は Null を返します。

マクロ、モジュール、クエリ式、または演算コントロールのいずれで DSum 関数を使っても、正しく評価されるように criteria 引数を慎重に構築する必要があります。

DSum 関数を使って、クエリの [条件] 行、クエリ式の集計フィールド、または update query の [更新対象] 行で条件を指定できます。

注: totals query の集計フィールド式では、DSum または Sum の両方の関数を使用できます。 DSum 関数を使用する場合、データをグループ化する前に値が計算がされます。 Sum 関数を使用する場合、フィールド式の値が評価される前にデータがグループ化されます。

フォームまたはレポートに対して、レコード ソース内に存在しないフィールドから値セットの合計を表示する必要がある場合、DSum 関数を使用することをお勧めします。 たとえば、特定の製品に関する情報を表示するフォームがあるとします。 DSum 関数を使って、演算コントロール内のその製品の現在の販売合計金額を保持することができます。

ヒント

レポートのコントロール内の累計を保持する必要がある場合、そのコントロールのベースとなるフィールドがレポートのレコード ソースに含まれていれば、そのコントロールの RunningSum プロパティを使用できます。 フォームで集計実行を保持するには、DSum 関数を使用します。

注: この関数を使用する場合、domain 内のレコードに対する未保存の変更は含まれません。 変更した値に基づいて DSum 関数を実行する場合は、[ホーム] タブの [レコード] グループにある [レコードの保存] をクリックして、別のレコードへフォーカスを移動するか、または Update メソッドを使用して、最初に変更を保存する必要があります。

使用例

式で DSum 関数を使用する   更新クエリの [更新対象] 行で定義域関数 (DSum など) を使用することができます。 たとえば、Product テーブル内の製品ごとに現在の販売額を追跡するとします。 SalesSoFar という新しいフィールドを Products テーブルに追加して、正しい値を計算して、レコードを更新するように、更新クエリを実行することができます。 そのためには、Products テーブルに基づいて新しいクエリを作成し、[デザイン] タブの [クエリの種類] グループで [更新] をクリックします。 クエリ グリッドに SalesSoFar フィールドを追加し、[更新対象] 行に次のように入力します。

DSum("[Quantity]*[UnitPrice]", "Order Details", _
"[ProductID] = "& [ProductID])

クエリを実行すると、Order Details テーブルの情報に基づいて、各製品の販売金額の合計が計算されます。 各製品の販売金額の合計が Products テーブルに追加されます。

VBA コードで DSum を使用する   

注: 次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の動作に関する詳細については、[検索] の横にあるドロップダウン リストの [開発者用リファレンス] を選んで、検索ボックスに語句を 1 つ以上入力してください。

次の例では、英国に出荷される注文に対し、"船荷" フィールドの値の合計を計算します。 定義域は Orders テーブルです。 criteria 引数により、生成されるレコード セットは、ShipCountryRegion が UK のレコードに制限されます。

Dim curX As Currency
curX = DSum("[Freight]", "Orders", _
"[ShipCountryRegion] = 'UK'")

次の例では、2 つの個別の条件を使って、合計を計算します。 文字列式には単一引用符 (') と数値記号 (#) が含まれるため、文字列の連結時に、リテラル文字列は単一引用符で囲まれ、日付はシャープ記号で囲まれます。

Dim curX As Currency
curX = DSum("[Freight]", "Orders", _
"[ShipCountryRegion] = 'UK' AND _
[ShippedDate] > #1-1-95#")
スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×