全部显示

DMin、DMax 函数

   

DMinDMax 函数用于确定指定记录集(一个) 中的最小值和最大值。可以在 Visual Basic、、查询表达式或计算控件中使用 DMinDMax 函数。

例如,可以在报表上的计算控件中使用 DMinDMax 函数来显示一个特定客户的最大和最小订单量。也可以在查询表达式中使用 DMin 函数显示折扣大于最小可能折扣的所有订单。

DMin(expr, domain, [criteria])

DMax(expr, domain, [criteria])

DMinDMax 函数具有以下参数:

参数 说明
expr 表达式,用于标识要为其查找最小值和最大值的字段。也可以是用来标识表或查询中字段的字符串表达式,或者是以该字段中的数据进行计算的表达式。在 expr 中可以包括表字段的名称、窗体上的控件、常量或函数。如果 expr 含有函数,那么它可以是内置的,也可以是用户自定义的,但不能是另一个域聚合函数或 SQL 聚合函数。
domain 字符串表达式,代表组成域的记录集。可以是表名称或不需要参数的查询的查询名称。
criteria 可选的字符串表达式,用于限制 DMinDMax 函数执行的数据范围。例如,criteria 通常等价于 SQL 表达式中的 WHERE 子句,只是不含 WHERE 关键字。如果忽略 criteriaDMinDMax 函数将在整个域范围内计算 expr。任何包含在 criteria 中的字段必须同时也是 domain 中的字段,否则 DMinDmax 函数将返回 Null

说明

DMinDMax 函数将返回满足 criteria 的最小值和最大值。如果 expr 标识的是数值数据,DMinDMax 函数将返回数字值。如果 expr 标识的是字符串数据,则返回按字母顺序排列的第一个或最后一个字符串。

DMinDMax 函数将忽略 expr 引用的字段中的 Null 值。但是,如果没有记录满足 criteria 或者 domain 中不包含记录,DMinDMax 函数将返回 Null

无论是在宏、模块、查询表达式或者在计算控件中使用 DMinDMax 函数,都必须谨慎构造 criteria 参数以确保能够正确地进行计算。

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

注意   可以在总计查询的计算字段表达式中使用 DMinDMax 函数或 MinMax 函数。如果使用 DMinDMax 函数,将在数据分组之前计算极值。如果使用 MinMax 函数,则在计算字段表达式的极值之前进行分组。

当需要指定条件来限制函数执行的数据范围时,可使用 DMinDMax 函数。例如,要显示运到“华北”的订单的最大运费,应将文本框的“控件来源”属性设置为下列表达式:

=DMax("[Freight]", "Orders", "[ShipRegion] = '华北'")

如果只是查找 domain 中所有记录的最小值和最大值,可使用 MinMax 函数。

如果要显示的字段不在窗体所基于的记录源中,可在模块、宏或窗体上的计算控件中使用 DminDMax 函数。

提示   虽然可以使用 DMinDMax 函数来查找外部表中字段的最大值\最小值。但通过创建含有这两个表中所有需要字段的查询,然后将窗体或报表建立在这个查询的基础上,效率可能会更高。

注意   使用这些函数时,对 domain 中的记录未保存的更改将不包括在内。如果要让 DMaxDmin 函数以更改后的数据为基础,必须先保存更改。方法是单击“记录”菜单上的“保存记录”,将焦点移动到另一记录上,或者使用 Update 方法。

示例

下面的示例返回运往英国的订单的“Freight”字段的最小和最大值。域为“Orders”表。criteria 参数将记录集的结果限制为“ShipCountry”等于 UK 的记录。

Dim curX As Currency
Dim curY As Currency

curX = DMin("[Freight]", "Orders", "[ShipCountry] = 'UK'")
curY = DMax("[Freight]", "Orders", "[ShipCountry] = 'UK'")

在下一示例中,criteria 参数将包含名为“OrderDate”的文本框的当前值。该文本框与“Orders”表中的“OrderDate”字段绑定。注意对控件的引用不要包括在标识字符串的双引号中。这样可以确保每次调用 DMax 函数时,Microsoft Access 都从控件中获得当前值。

Dim curX As Currency
curX = DMax("[Freight]", "Orders", "[OrderDate] = #" _
    & Forms!Orders!OrderDate & "#")

在下一个示例中,查询表达式中包含一个变量 dteOrderDate。注意数字符号(#)在字符串表达式中使用,使得字符串连接时包含日期。

Dim dteOrderDate As Date
Dim curX As Currency

dteOrderDate = #03/30/2000#
curX = DMin("[Freight]", "Orders", _
    "[OrderDate] = #" & dteOrderDate & "#")