Application.DMax 方法 (Access)
使用 DMax 函数确定域) (指定记录集中的最大值。
语法
表达式。DMax (Expr、 域、 条件)
expression:表示 Application 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
Expr | 必需 | 字符串 | 表达式,用于标识要从中查找最小值或最大值的字段。 它可以是用来标识表或查询中字段的字符串表达式,也可以是对该字段中的数据执行计算的表达式。 在 expr 中,可以包含表中字段、窗体控件、常量或函数的名称。 如果 expr 包含函数,它可以是内置函数或用户定义的函数,但不能是其他域聚合函数或 SQL 聚合函数。 |
域 | 必需 | 字符串 | 字符串表达式,用于标识组成域的记录集。 可以是表名称或不需要参数的查询的查询名称。 |
Criteria | 可选 | Variant | 可选的字符串表达式,用于限制作为 DMax 函数执行对象的数据的范围。 例如,criteria通常是相当于 SQL 表达式中的 WHERE 子句位置,但是不使用 WHERE一词。 如果省略 criteria,DMax 函数将针对整个域对 expr 求值。 条件中包含的任何字段也必须是域中的字段;否则,DMax 函数返回 Null。 |
返回值
Variant
备注
例如,可以在报表的计算控件中使用 DMax 函数来显示特定客户的最大订单量。
DMax 函数返回满足条件的最大值。 如果 expr 标识数值数据, 则 DMax 函数将返回数值。 如果 expr 标识字符串数据,则返回字母顺序为第一个或最后一个的字符串。
DMax 函数将忽略 expr 引用的字段中的 Null 值。 但是,如果没有记录满足 条件,或者 域 不包含任何记录, 则 DMax 函数将返回 Null。
使用 DMax 函数在查询的 Criteria 行、查询的计算字段表达式或更新查询的 “更新到” 行中指定条件。
注意
在总计查询的计算字段表达式中使用 DMax 函数或 Max 函数。 如果使用 DMax 函数,则会在对数据进行分组之前计算值。 如果使用 Max 函数,则会在计算字段表达式中的值之前对数据进行分组。
当需要指定条件来限制作为函数执行对象的数据的范围时,可以在计算控件中使用 DMax 函数。 例如,若要显示发往加州的订单的最高运费,请将文本框的 ControlSource 属性设置为以下表达式:
=DMax("[Freight]", "Orders", "[ShipRegion] = 'CA'")
如果只想在 domain 中查找所有记录的最小值或最大值,请使用 Min 或 Max 函数。
虽然可以使用 DMin 或 DMax 函数在外表中的字段中查找最小值或最大值,但是,如果先创建含有所需的这两个表中的字段的查询,然后再将窗体或报表建立在这个查询的基础上,效率可能会更高。
示例
下面的示例返回运往英国的订单的“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 参数将包含名为“订购日期”的文本框的当前值。 文本框绑定到 Orders 表中的 OrderDate 字段。 请注意,对控件的引用不要包括在标识字符串的双引号 (") 中。 这样可以确保每次调用 DMax 函数时,Microsoft Access 都从控件中获得当前值。
Dim curX As Currency
curX = DMax("[Freight]", "Orders", "[OrderDate] = #" _
& Forms!Orders!OrderDate & "#")
以下示例演示如何对 DMax 函数使用各种类型的条件。
' ***************************
' Typical Use
' Numerical values. Replace "number" with the number to use.
variable = DMax("[FieldName]", "TableName", "[Criteria] = number")
' Strings.
' Numerical values. Replace "string" with the string to use.
variable = DMax("[FieldName]", "TableName", "[Criteria]= 'string'")
' Dates. Replace "date" with the string to use.
variable = DMax("[FieldName]", "TableName", "[Criteria]= #date#")
' ***************************
' ***************************
' Referring to a control on a form
' Numerical values
variable = DMax("[FieldName]", "TableName", "[Criteria] = " & Forms!FormName!ControlName)
' Strings
variable = DMax("[FieldName]", "TableName", "[Criteria] = '" & Forms!FormName!ControlName & "'")
' Dates
variable = DMax("[FieldName]", "TableName", "[Criteria] = #" & Forms!FormName!ControlName & "#")
' ***************************
' ***************************
' Combinations
' Multiple types of criteria
variable = DMax("[FieldName]", "TableName", "[Criteria1] = " & Forms![FormName]![Control1] _
& " AND [Criteria2] = '" & Forms![FormName]![Control2] & "'" _
& " AND [Criteria3] =#" & Forms![FormName]![Control3] & "#")
' Use two fields from a single record.
variable = DMax("[LastName] & ', ' & [FirstName]", "tblPeople", "[PrimaryKey] = 7")
' Expressions
variable = DMax("[Field1] + [Field2]", "tableName", "[PrimaryKey] = 7")
' Control Structures
variable = DMax("IIf([LastName] Like 'Smith', 'True', 'False')", "tableName", "[PrimaryKey] = 7")
' ***************************
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈