DSum 関数を使って、指定したレコード セット (ドメイン) 内の値セットの合計を計算できます。 Visual Basic for Applications (VBA) モジュール、マクロ、クエリ式、または 演算コントロール で、DSum 関数を使用します。
たとえば、クエリ内の集計フィールド式で DSum 関数を使って、一定の期間中に特定の従業員が売り上げた販売合計金額を計算できます。 また演算コントロール内で DSum 関数を使って、特定の製品で現在達成した販売合計額を表示することができます。
構文
DSum ( expr , domain [, criteria] )
DSum 関数の構文には、次の引数があります。
引数 |
説明 |
expr |
必須。 値の合計を求める数値フィールドを識別する式。 テーブルやクエリ内のフィールドを識別する文字列式であることもあれば、対象フィールド内のデータに対して計算を実行する式である場合もあります。 expr では、テーブル内のフィールド、フォームのコントロール、定数、または関数の名前を指定することができます。 expr で関数を指定する場合、その関数は組み込みでもユーザー定義でもかまいませんが、別の定義域の集計関数または SQL 集計関数は使えません。 |
定義域 |
必須。 定義域を構成するレコード セットを識別する文字列式。 テーブル名の場合もあれば、パラメーターを必要としないクエリのクエリ名の場合もあります。 |
criteria |
省略可能です。 DSum 関数を実行するデータの範囲を制限するために使用される文字列式。 たとえば、 条件 は、多くの場合、WHERE という単語を含まない SQL 式の WHERE 句と同じです。 条件を省略すると、DSum 関数はドメイン全体に対して expr を評価します。 条件に含まれるフィールドは、ドメイン内のフィールドである必要もあります。それ以外の場合、DSum 関数は Null を返します。 |
解説
criteria 引数を満たすレコードがない場合、または定義域にレコードが含まれていない場合、DSum 関数は Null を返します。
マクロ、モジュール、クエリ式、または演算コントロールのいずれで DSum 関数を使っても、正しく評価されるように criteria 引数を慎重に構築する必要があります。
DSum 関数を使って、クエリの [条件] 行、クエリ式の集計フィールド、または 更新クエリ の [更新対象] 行で条件を指定できます。
注: 集計クエリ の集計フィールド式では、DSum または Sum の両方の関数を使用できます。 DSum 関数を使用する場合、データをグループ化する前に値が計算がされます。 Sum 関数を使用する場合、フィールド式の値が評価される前にデータがグループ化されます。
フォームまたはレポートに対して、レコード ソース内に存在しないフィールドから値セットの合計を表示する必要がある場合、DSum 関数を使用することをお勧めします。 たとえば、特定の製品に関する情報を表示するフォームがあるとします。 DSum 関数を使って、演算コントロール内のその製品の現在の販売合計金額を保持することができます。
ヒント
レポートのコントロール内の累計を保持する必要がある場合、そのコントロールのベースとなるフィールドがレポートのレコード ソースに含まれていれば、そのコントロールの RunningSum プロパティを使用できます。 フォームで集計実行を保持するには、DSum 関数を使用します。
注: この関数を使用する場合、domain 内のレコードに対する未保存の変更は含まれません。 変更した値に基づいて DSum 関数を実行する場合は、[ホーム] タブの [レコード] グループにある [レコードの保存] をクリックして、別のレコードへフォーカスを移動するか、または Update メソッドを使用して、最初に変更を保存する必要があります。
使用例
式で DSum 関数を使用する 更新クエリの [更新対象] 行でドメイン関数 ( DSum など) を 使用できます。 たとえば、Products テーブル内の製品別の現在の売上を追跡するとします。 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#")