使用 DAvg 函数可以计算特定记录集(一个域)内一组值的平均值。可以在 Visual Basic 代码、宏、查询表达式或计算控件中使用 DAvg 函数。
例如,可以在选择查询的运费字段所对应的条件行中使用 DAvg 函数,来限制返回运费超过平均值以上的记录。或者在计算控件中使用包含 DAvg 函数的表达式,在新订单值旁边显示旧订单的平均值。
DAvg(expr, domain, [criteria])
DAvg 函数具有以下参数:
参数 | 说明 |
---|---|
expr | 一个表达式,代表要计算其平均值的数值数据字段。可以是用来标识表或查询中字段的字符串表达式,也可以是对该字段上的数据执行计算的表达式。在 expr 中可以包括表中字段的名称、窗体上的控件、常量或函数。如果 expr 包含函数,那么它可以是内置的,也可以是用户定义的,但不能是另一个域聚合函数或 SQL 聚合函数。 |
domain | 字符串表达式,代表组成该域的记录集。可以是表名称或不需要参数的查询名称。 |
criteria | 可选的字符串表达式,用于限制 Davg 函数执行的数据范围。例如,criteria 通常等价于 SQL 表达式中的 WHERE 子句,只是不含 WHERE 关键字。如果忽略 criteria,DAvg 函数将对整个域计算 expr。任何包含在 criteria 中的字段必须同时也是 domain 中的字段,否则 DAvg 函数将返回 Null。 |
包含 Null 值的记录不能在平均值的计算中使用。
无论是在宏、模块、查询表达式还是在计算控件中使用 DAvg 函数,都必须仔细地构造 criteria 参数,以确保能够正确地进行计算。
在查询的“条件”行中可以使用 DAvg 函数来指定条件。例如,要查看所有定购数量在平均订购量以上的产品列表,可以基于“Orders”、“Order Details”和“Products”表创建一个查询,包含“Product Name”和“Quantity”字段,并在“Quantity”字段下的“条件”行中加入以下表达式:
>DAvg("[Quantity]", "Orders")
在查询的计算字段表达式中,或更新查询中“更新到”行中的计算字段表达式中,也可以使用 DAvg 函数。
注意 在总计查询的计算字段表达式中既可以使用 DAvg 函数也可以使用 Avg 函数。如果使用 DAvg 函数,将在数据分组之前计算平均值。如果使用 DAvg 函数,则在数据分组之后计算字段表达式的平均值。
当需要指定条件来限制 DAvg 函数执行的数据范围时,应在计算控件中使用 DAvg 函数。例如,要显示到 California 的运费的平均值,应将文本框的 ControlSource 属性设为如下表达式:
=DAvg("[Freight]", "Orders", "[ShipRegion] = 'CA'")
如果只对所有 domain 中的记录计算平均值,则可使用 Avg 函数。
如果要显示的字段不在窗体的基础记录源中时,可以在模块或宏中,或者窗体上的计算控件中,使用 DAvg 函数。例如,有一个基于“订单”表的窗体,希望包含“订单明细”表中的“数量”字段,以显示按特定客户排序的项目平均值,可以使用 DAvg 函数来执行这项计算并在窗体中显示该数据。
提示
注意 在使用该函数时,未保存在 domain 中的记录更改将不包括在内。如果要让 DAvg 函数以更改后的数据为基础,方法是单击“记录”菜单中的“保存记录”、将焦点移动到另一条记录,或者使用 Update 方法。
下面的函数返回已发货订单或特定日期的运费的平均值。域为“Orders”表。criteria 参数根据给定的国家/地区和发货日期,来限制生成的记录集。请注意,关键字 AND 包含在字符串中,用于分隔 criteria 参数中的多个字段。所有包含在 DAvg 函数计算中的记录都符合这两个条件。
Public Function AvgFreightCost(ByVal strCountry As String, _
ByVal dteShipDate As Date) As Double
AvgFreightCost = DAvg("[Freight]", "Orders", _
"[ShipCountry] = '" & strCountry & _
"'AND [ShippedDate] >= #" & dteShipDate & "#")
End Function
若要调用该函数,请在“立即”窗口中使用下列代码:
:AvgFreightCost "UK", #1/1/96#