可以使用 DAvg 函数计算指定记录集中一组值的平均值, ( 域 ) 。 在 Visual Basic for Applications (VBA) 模块、 宏 、查询表达式或 计算控件 中使用 DAvg 函数。
例如,可以在货运成本选择查询的条件行中使用 DAvg 函数,将结果限制为货运成本超过平均值的记录。 或者,可以在计算控件中使用包含 DAvg 函数的表达式,并在新订单的值旁边显示以前订单的平均值。
语法
DAvg ( expr 、域 [, criteria] )
DAvg 函数语法具有以下参数:
参数 |
说明 |
expr |
必需。 一个表达式,标识包含要求平均值的数字数据的字段。 它可以是标识表或查询中的字段的 字符串表达式 ,也可以是对该字段中的数据执行计算的表达式。 在 expr 中,可以在表中包括字段的名称、窗体上的控件、常量或函数。 如果 expr 包含函数,它可以是内置函数或用户定义的函数,但不能是其他域聚合函数或 SQL 聚合函数。 |
域 |
必需。 一个字符串表达式,标识构成域的记录集。 它可以是表名,也可以是不需要参数的查询的查询名称。 |
条件 |
可选。 用于限制执行 DAvg 函数的数据范围的字符串表达式。 例如, 条件 通常等效于 SQL 表达式中的 WHERE 子句,而不使用 WHERE 一词。 如果省略 条件 , 则 DAvg 函数会针对整个域评估 expr 。 criteria 中包含的任何字段也必须是域中的字段;否则,DAvg 函数返回 Null。 |
备注
包含 Null 值的记录不包括在平均值的计算中。
无论是在宏或模块、查询表达式还是计算控件中使用 DAvg 函数,都必须仔细构造 criteria 参数,以确保正确计算它。
可以使用 DAvg 函数在查询的“条件”行中指定条件。 例如,假设你想要查看按数量超过平均订单数量的所有订购产品的列表。 可以针对“订单”、“订单详细信息”和“产品”表创建查询,并在“数量”字段下的“条件”行中包含“产品名称”字段和“数量”字段,其表达式如下:
>DAvg("[Quantity]", "Orders")
还可以在查询的计算字段表达式或 更新查询 的“更新到”行中使用 DAvg 函数。
注意: 可以在 总计查询 中的计算字段表达式中使用 DAvg 或 Avg 函数。 如果使用 DAvg 函数,则会在对数据进行分组之前对值求平均值。 如果使用 Avg 函数,则会在对字段表达式中的值求平均值之前对数据进行分组。
需要指定条件以限制执行 DAvg 函数的数据范围时,请在计算控件中使用 DAvg 函数。 例如,若要显示发送到加州的货物的平均运费,请将文本框的 ControlSource 属性设置为以下表达式:
=DAvg("[Freight]", "Orders", "[ShipRegion] = 'CA'")
如果只想平均 域中的所有记录,请使用 Avg 函数。
如果需要显示的字段不在窗体所基于的记录源中,则可以在模块、宏或窗体上的计算控件中使用 DAvg 函数。 例如,假设你有一个基于“订单”表的窗体,并且想要包含“订单详细信息”表中的“数量”字段,以显示特定客户订购的平均项数。 可以使用 DAvg 函数执行此计算并在窗体上显示数据。
提示
-
如果在计算控件中使用 DAvg 函数,则可能需要将控件放在窗体页眉或页脚上,以便每次移动到新记录时都不会重新计算此控件的值。
-
如果派生 expr 的字段的数据类型是数字,则 DAvg 函数返回 Double 数据类型。 如果在计算控件中使用 DAvg 函数,请在表达式中包含数据类型转换函数以提高性能。
-
尽管可以使用 DAvg 函数确定 外表 中某个字段中值的平均值,但创建包含所有所需字段的查询,然后基于该查询创建窗体或报表的查询可能更有效。
注意: 使用此函数时,不包括 对域中 记录的未保存更改。 如果希望 DAvg 函数基于更改的值,必须先通过单击“数据”选项卡上的“记录”下的“保存记录”、将焦点移动到另一条记录或使用 Update 方法保存更改。
示例
注意: 下面的示例演示了如何在 Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在搜索旁边的下拉列表中选择“开发人员参考”,并在搜索框中输入一个或多个术语。
以下函数返回给定日期或之后发货的订单的平均运费。 域是 Orders 表。 criteria 参数根据给定的国家/地区和发货日期限制生成的记录集。 请注意,关键字 (keyword) AND 包含在字符串中,用于分隔 criteria 参数中的多个字段。 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#