可以使用 DMin 和 DMax 函数来确定指定记录集中的最小值和最大值, ( 域 ) 。 在 Visual Basic for Applications 中使用 DMin 和 DMax 函数 (VBA) 模块、 宏 、查询表达式或 计算控件 。
例如,可以在报表的计算控件中使用 DMin 和 DMax 函数来显示特定客户的最小和最大订单量。 或者,可以在查询表达式中使用 DMin 函数来显示折扣高于可能的最低折扣的所有订单。
语法
DMin ( expr 、域 [, criteria] )
DMax ( expr 、域 [, criteria] )
DMin 和 DMax 函数具有以下参数:
参数 |
说明 |
---|---|
expr |
必需。 一个表达式,标识要查找其最小值或最大值的字段。 它可以是标识表或查询中的字段的 字符串表达式 ,也可以是对该字段中的数据执行计算的表达式。 在 expr 中,可以在表中包括字段的名称、窗体上的控件、常量或函数。 如果 expr 包含函数,它可以是内置函数或用户定义的函数,但不能是其他域聚合函数或 SQL 聚合函数。 |
域 |
必需。 一个字符串表达式,标识构成域的记录集。 它可以是表名,也可以是不需要参数的查询的查询名称。 |
条件 |
可选。 用于限制执行 DMin 或 DMax 函数的数据范围的字符串表达式。 例如, 条件 通常等效于 SQL 表达式中的 WHERE 子句,而不使用 WHERE 一词。 如果省略 条件 , 则 DMin 和 DMax 函数针对整个域评估 expr 。 条件中包含的任何字段也必须是域中的字段,否则 DMin 和 DMax 函数将返回 Null。 |
备注
DMin 和 DMax 函数返回满足条件的最小值和最大值。 如果 expr 标识数值数据, 则 DMin 和 DMax 函数返回数值。 如果 expr 标识字符串数据,则按字母顺序返回第一个或最后一个字符串。
DMin 和 DMax 函数忽略 expr 引用的字段中的 Null 值。 但是,如果没有记录满足 条件 或 域 不包含任何记录, 则 DMin 和 DMax 函数返回 Null。
无论是在宏、模块、查询表达式还是计算控件中使用 DMin 或 DMax 函数,都必须仔细构造 criteria 参数,以确保正确计算该参数。
可以使用 DMin 和 DMax 函数在查询的 Criteria 行、查询的计算字段表达式或 更新查询 的“更新到”行中指定条件。
注意: 可以在 总计查询 的计算字段表达式中使用 DMin 和 DMax 函数或 Min 和 Max 函数。 如果使用 DMin 或 DMax 函数,则会在对数据进行分组之前计算值。 如果使用 Min 或 Max 函数,则会在计算字段表达式中的值之前对数据进行分组。
如果需要指定条件来限制执行函数的数据范围,请在计算控件中使用 DMin 或 DMax 函数。 例如,若要显示发往加州的订单的最高运费,请将文本框的 ControlSource 属性设置为以下表达式:
=DMax("[Freight]", "Orders", "[ShipRegion] = 'CA'")
如果只想查找 域中所有记录的最小值或最大值,请使用 Min 或 Max 函数。
如果需要显示的字段不在窗体所基于的记录源中,则可以在模块、宏或窗体上的计算控件中使用 DMin 或 DMax 函数。
提示
尽管可以使用 DMin 或 DMax 函数从 外表 中的字段中查找最小值或最大值,但创建包含表中所需字段的查询并基于该查询创建查询可能更有效。
注意: 使用这些函数时,不包括 对域中 记录的未保存更改。 如果希望 DMax 或 DMin 函数基于更改的值,必须先通过单击“数据”选项卡上的“记录”下的“保存记录”,将焦点移动到另一条记录,或使用 Update 方法保存更改。
示例
注意: 以下示例演示了如何在 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 & "#")
在下一个示例中,criteria 表达式包含变量, dteOrderDate。 请注意,数字符号 (#) 包含在字符串表达式中,以便在串联字符串时,它们将括起日期。
Dim dteOrderDate As Date
Dim curX As Currency
dteOrderDate = #03/30/2000#
curX = DMin("[Freight]", "Orders", _
"[OrderDate] = #" & dteOrderDate & "#")