DAvg 函数

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

可以使用 DAvg 函数计算指定记录集中一组值的平均值 (域) 。 在 Visual Basic for Applications (VBA) 模块、宏、查询表达式或计算控件中使用 DAvg 函数。

例如,您可以在运费选择查询的条件行中使用 DAvg 函数,将结果限制为运费超过平均值的记录。 或者,可以在计算控件中使用包含 DAvg 函数的表达式,并在新订单值旁边显示先前订单的平均值。

语法

DAvg (expr, domain [, criteria] )

DAvg 函数语法具有以下参数:

参数 说明
expr 必需。 标识包含要求平均值的数值数据的字段的表达式。 它可以是标识表或查询中字段的字符串表达式,也可以是对该字段中的数据执行计算的表达式。 在 expr 中,您可以包含表中的字段名称、窗体上的控件、常量或函数的名称。 如果 expr 包含一个函数,则它可以是内置的或用户定义的,但不能是另一个域聚合或 SQL 聚合函数。
必需。 标识构成域的记录集的字符串表达式。 它可以是表名称,也可以是不需要参数的查询的查询名称。
条件 可选。 用于限制对其执行 DAvg 函数的数据范围的字符串表达式。 例如, criteria 通常等效于 SQL 表达式中的 WHERE 子句,而不包含单词 WHERE。 如果省略 条件DAvg 函数将针对整个域计算 expr 条件中包含的任何字段也必须是中的字段;否则,DAvg 函数返回 Null。

    

备注

包含 Null 值的记录不包括在平均值的计算中。

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

可以使用 DAvg 函数在查询的“条件”行中指定条件。 例如,假设您要查看订购数量高于平均订购数量的所有产品的列表。 可以在“订单”、“订单详细信息”和“产品”表上创建查询,并包括“产品名称”字段和“数量”字段,并在“数量”字段下的“条件”行中使用以下表达式:

>DAvg("[Quantity]", "Orders")

也可以在查询的计算字段表达式内或更新查询的“更新到”行中使用 DAvg 函数。

注意

可以在总计查询的计算字段表达式中使用 DAvgAvg 函数。 如果使用 DAvg 函数,则在对数据进行分组之前对值进行平均。 如果使用 Avg 函数,则在对字段表达式中的值进行平均之前对数据进行分组。

当您需要指定条件来限制对其执行 DAvg 函数的数据范围时,请在计算控件中使用 DAvg 函数。 例如,若要显示发往加利福尼亚的货件的平均运费,请将文本框的 ControlSource 属性设置为以下表达式:

=DAvg("[Freight]", "Orders", "[ShipRegion] = 'CA'")

如果只想对 中的所有记录进行平均值,请使用 Avg 函数。

如果需要显示的字段不在窗体所基于的记录源中,则可以在模块或宏或窗体上的计算控件中使用 DAvg 函数。 例如,假设您有一个基于“订单”表的窗体,并且想要包含“订单详细信息”表中的“数量”字段,以显示特定客户订购的平均项目数。 可以使用 DAvg 函数执行此计算并在窗体上显示数据。

提示

  • 如果在计算控件中使用 DAvg 函数,则可能需要将该控件放在窗体页眉或页脚上,这样,每次移动到新记录时都不会重新计算此控件的值。
  • 如果派生 expr 的字段的数据类型为数字,则 DAvg 函数将返回 Double 数据类型。 如果在计算控件中使用 DAvg 函数,请在表达式中包括数据类型转换函数以提高性能。
  • 虽然可以使用 DAvg 函数来确定外部表中字段中值的平均值,但创建包含您需要的所有字段的查询,然后基于该查询创建窗体或报表可能更有效。

注意

使用此函数时,不包括 对域 中记录的未保存更改。 如果希望 DAvg 函数基于更改的值,必须先通过单击“数据”选项卡上“记录”下的“保存记录”保存更改,将焦点移动到另一条记录,或使用“更新”方法保存更改。

示例

注意

下面的示例演示了在Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在“搜索”旁边的下拉列表中选择“开发人员参考”,然后在搜索框中输入一个或多个术语。

以下函数返回给定日期当日或之后发货的订单的平均运费。 域是 Orders 表。 criteria 参数基于给定的国家/地区和发货日期对生成的记录集进行限制。 请注意,字符串中包含关键字 (keyword) AND,用于分隔条件参数中的多个字段。 DAvg 函数计算中包含的所有记录都将具有这两个条件。

Public Function AvgFreightCost _
    (ByVal strCountryRegion As String, _
     ByVal dteShipDate As Date) As Double
    AvgFreightCost = DAvg("[Freight]", "Orders", _
        "[ShipCountryRegion] = '" & strCountryRegion & _
        "'AND [ShippedDate] >= #" & dteShipDate & "#")
End Function

要调用该函数,请在“即时”窗口中使用以下代码行:

:AvgFreightCost "UK", #1/1/96#