Application.DSum 方法 (Access)

使用 DSum 函数可以计算指定记录集中一组值的总和, (域) 。

语法

表达式DSum (Expr条件)

expression:表示 Application 对象的变量。

参数

名称 必需/可选 数据类型 说明
Expr 必需 字符串 表达式,用于标识要对其值作总计的字段。 它可以是标识表或查询中字段的字符串表达式,也可以是执行该字段中数据的计算的表达式。 在 expr 中,可以在表中包括字段的名称、窗体上的控件、常量或函数。 如果 expr 包含函数,它可以是内置函数或用户定义的函数,但不能是其他域聚合函数或 SQL 聚合函数。
必需 字符串 字符串表达式,用于标识组成域的记录集。 可以是表名称或不需要参数的查询的查询名称。
Criteria 可选 Variant 可选字符串表达式,用于限制 DSum 函数的执行对象的数据取值范围。 例如,criteria通常是相当于 SQL 表达式中的 WHERE 子句位置,但是不使用 WHERE一词。 如果省略 criteriaDSum 函数将对整个域计算 expr。 任何包含在 criteria 中的字段必须也必须是 ___domain 中的字段;否则 DSum 函数将返回 Null

返回值

Variant

备注

例如,可以在查询的计算字段表达式中使用 DSum 函数来计算一段时期某个特定雇员的总销售量。 也可以在计算控件中使用 DSum 函数来显示特定产品的连续的销售总和。

如果没有记录满足 criteria 参数,或者域不包含任何记录, 则 DSum 函数返回 Null

无论是在宏、模块、查询表达式中,还是在计算控件中使用 DSum 函数,都必须仔细构建 criteria 以确保它能正确地计算。

使用 DSum 函数在查询的 “条件” 行、查询表达式的计算字段或更新查询的 “更新到 ”行中指定条件。

注意

在总计查询的计算字段表达式中使用 DSumSum 函数。 如果使用 DSum 函数,将在数据分组之前计算总计值。 如果使用 Sum 函数,则将先分组再对字段表达式中值进行求和。

当需要显示窗体或报表的记录源之外的字段的一组值的总和时,可能需要使用 DSum 函数。 例如,假设有一个窗体显示有关特定产品的信息。 可以使用 DSum 函数在计算控件中维护该产品的运行总销售额。

如果需要在报表上的控件中维护正在运行的总计,则可以使用该控件的 RunningSum 属性,前提是该控件所基于的字段包含在报表的记录源中。 使用 DSum 函数来维护窗体上的运行总和。

示例

以下示例汇总了运往英国的订单的 “货运 ”字段中的值。 域为“Orders”表。 criteria 参数将记录集的结果限制为“ShipCountry”等于 UK 的记录。

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

下一个示例通过使用两个不同的条件来计算总计。 注意单引号(')和数字符号(#)需要包括在字符串表达式中,使得字符串连接时,将原义字符串包含在单引号中,将日期包含在数字符号中。

Dim curX As Currency 
curX = DSum("[Freight]", "Orders", _ 
    "[ShipCountry] = 'UK' AND [ShippedDate] > #1-1-95#")

以下示例演示如何对 DSum 函数使用各种类型的条件。

    ' ***************************
    ' Typical Use
    ' Numerical values. Replace "number" with the number to use.
    variable = DSum("[FieldName]", "TableName", "[Criteria] = number")

    ' Strings.
    ' Numerical values. Replace "string" with the string to use.
    variable = DSum("[FieldName]", "TableName", "[Criteria]= 'string'")

    ' Dates. Replace "date" with the string to use.
    variable = DSum("[FieldName]", "TableName", "[Criteria]= #date#")
    ' ***************************

    ' ***************************
    ' Referring to a control on a form
    ' Numerical values
    variable = DSum("[FieldName]", "TableName", "[Criteria] = " & Forms!FormName!ControlName)

    ' Strings
    variable = DSum("[FieldName]", "TableName", "[Criteria] = '" & Forms!FormName!ControlName & "'")

    ' Dates
    variable = DSum("[FieldName]", "TableName", "[Criteria] = #" & Forms!FormName!ControlName & "#")
    ' ***************************

    ' ***************************
    ' Combinations
    ' Multiple types of criteria
    variable = DSum("[FieldName]", "TableName", "[Criteria1] = " & Forms![FormName]![Control1] _
             & " AND [Criteria2] = '" & Forms![FormName]![Control2] & "'" _
            & " AND [Criteria3] =#" & Forms![FormName]![Control3] & "#")
    
    ' Use two fields from a single record.
    variable = DSum("[LastName] & ', ' & [FirstName]", "tblPeople", "[PrimaryKey] = 7")
            
    ' Expressions
    variable = DSum("[Field1] + [Field2]", "tableName", "[PrimaryKey] = 7")
    
    ' Control Structures
    variable = DSum("IIf([LastName] Like 'Smith', 'True', 'False')", "tableName", "[PrimaryKey] = 7")
    ' ***************************

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。