DMin 和 DMax 函数

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

可以使用 DMinDMax 函数来确定域) (一组指定记录中的最小值和最大值。 在Visual Basic for Applications (VBA) 模块、宏、查询表达式或计算控件中使用 DMinDMax 函数。

例如,您可以在报表的计算控件中使用 DMinDMax 函数,以显示特定客户的最小和最大订单金额。 或者,可以在查询表达式中使用 DMin 函数,以显示折扣大于最小折扣的所有订单。

语法

DMin (expr, domain [, criteria] )

DMax (expr, domain [, criteria] )

DMinDMax 函数具有以下参数:

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

备注

DMinDMax 函数返回满足条件的最小值和最大值。 如果 expr 标识数值数据,则 DMinDMax 函数返回数值。 如果 expr 标识字符串数据,则返回按字母顺序排在前面或最后一个的字符串。

DMinDMax 函数忽略 expr 引用的字段中的 Null 值。 但是,如果没有记录满足 条件 不包含任何记录,则 DMinDMax 函数将返回 Null

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

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

注意

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

如果需要指定条件来限制对其执行函数的数据范围,请在计算控件中使用 DMinDMax 函数。 例如,若要显示发往加利福尼亚的订单收取的最高运费,请将文本框的 ControlSource 属性设置为以下表达式:

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

如果只想查找 中所有记录的最小值或最大值,请使用 MinMax 函数。

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

提示

虽然可以使用 DMin 或 DMax 函数从外部表中的字段中查找最小值或最大值,但创建包含两个表中所需字段的查询并基于该查询创建窗体或报表可能更有效。

注意

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

示例

注意

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

对于发往英国的订单,以下示例从运费字段中返回最低值和最高值。 域是 Orders 表。 criteria 参数将生成的记录集限制为 ShipCountryRegion 等于 UK 的记录集。


Dim curX As Currency
Dim curY As Currency
curX = DMin("[Freight]", "Orders", _
    "[ShipCountryRegion] = 'UK'")
curY = DMax("[Freight]", "Orders", _
    "[ShipCountryRegion] = 'UK'")

在下一个示例中, criteria 参数包括名为 OrderDate 的文本框的当前值。 此文本框绑定到 Orders 表中的 OrderDate 字段。 请注意,对控件的引用不包括在表示字符串的双引号 (“) 中。 这可确保每次调用 DMax 函数时,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 & "#")