DAvg 函数

expandtri全部显示

使用 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 函数来执行这项计算并在窗体中显示该数据。

提示

?在计算控件中使用 DAvg 函数时,有时需要将控件放在窗体页眉或页脚中,以便该控件的值在每次移动到新记录时不必重新计算。
?如果 expr 所源于的字段数据类型为数字,则 DAvg 函数将返回 Double 数据类型。如果在计算控件中使用 DAvg 函数,可在表达式中包含数据类型转换函数,以提高性能。
?虽然使用 DAvg 函数可以确定外部表字段的数据平均值,但是通过创建含有所有需要字段的查询,然后将窗体或报表建立在这个查询的基础上,效率将更高。

注释  当使用此函数时,不包括对 domain 记录未保存的更改。如果希望 DAvg 函数基于更改后的值,必须首先保存更改,方法是:单击“记录”菜单中的“保存记录”、将焦点移动到另一条记录,或使用 Update 方法。

示例

下列函数返回特定日期或特定日期以后已发订货的平均运费。域为“Orders”表。条件参数根据给定的国家/地区和发货日期来限制生成的记录集。请注意,关键字 AND 包含在字符串内,用于分隔条件参数内的多个字段。包含在 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#