在 Access 桌面数据库中,可以使用 DLookup 函数从指定记录集获取特定字段的值, ( 域 ) 。 在窗体或报表的 Visual Basic for Applications (VBA) 模块、 宏 、查询表达式或 计算控件DLookup 函数。

注意: 本文不适用于 Access Web 应用。

可以使用 DLookup 函数显示窗体或报表的记录源中不为字段的值。 例如,假设有一个基于"订单明细"表的窗体。 窗体显示"订单 ID"、"产品 ID"、"单价"、"数量"和"折扣"字段。 但是,ProductName 字段在另一个表中,即"产品"表。 可以使用计算控件中的 DLookup 函数在同一窗体上显示 ProductName。

语法

DLookup ( expr, domain [ ,criteria] )

DLookup函数语法具有以下参数:

参数

说明

expr

必需。 一个表达式,用于标识要返回其值的字段。 它可以是 字符串表达式 或查询中的字段的一个索引,或者是对该字段中数据执行计算的表达式。 在 expr中,可以包括表中的字段名称、窗体上的控件、常量或函数。 如果 expr 包含函数,则它可以是内置函数或用户定义的函数,但不能是另一个域聚合或SQL函数。

必需。 一个字符串表达式,标识构成域的记录集。 它可以是不需要参数的查询的表名或查询名称。

条件

可选。 用于限制执行 DLookup 函数的数据范围的字符串表达式。 例如, 条件 通常等效于 SQL 表达式中的 WHERE 子句,不带 WHERE 一词。 如果省略条件,DLookup函数将针对整个域计算 expr。 条件中包含的任何 字段 也必须是域中的 字段;否则 ,DLookup 函数返回 Null。

备注

DLookup函数基于条件中指定的信息返回单个字段。 虽然条件是可选参数,如果不为条件提供值,DLookup函数会返回域中的随机值。

如果没有满足条件的记录或不包含任何记录,DLookup函数将返回Null。

如果多个字段满足条件,DLookup函数将返回第一个匹配项。 应指定条件,确保 DLookup 函数返回的字段值是唯一的。 可能需要为条件使用 主键 值,如以下示例中的 [EmployeeID] ,以确保 DLookup 函数返回唯一值:

Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
"[EmployeeID] = 1")

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

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

如果需要显示的字段不在窗体或报表所基于的记录源中,还可以在窗体或报表的计算控件中的表达式中使用 DLookup 函数。 例如,假设有一个基于"订单详细信息"表的订单详细信息窗体,其文本框名为 ProductID,显示 ProductID 字段。 若要根据文本框中的值从"产品"表中查找 ProductName,可以创建另一个文本框,将 ControlSource 属性设置为以下表达式:

=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)

提示

  • 虽然可以使用 DLookup 函数显示 外表 中字段的值,但创建包含这两个表中的字段的查询,然后将窗体或报表基于该查询可能更有效。

  • 还可使用"查找向导"在外表中查找值。

注意: 使用此函数时,不包括对域中记录的未保存更改。 如果希望DLookup函数基于更改的值,必须先单击"数据"选项卡上的"记录"下的"保存记录",将焦点移动到另一条记录,或者使用Update方法保存更改。

示例

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

以下示例从满足条件的记录的 CompanyName 字段返回名称 信息。 域是运货商表。 criteria参数将生成的记录集限制为"运货商 ID"等于 1 的记录集。

Dim varX As Variant
varX = DLookup("[CompanyName]", _
"Shippers", "[ShipperID] = 1")

"运货商"表中的下一个示例使用窗体控件"运货商 ID"为 DLookup 函数提供条件。 请注意,对控件的引用不包括在表示字符串的引号中。 这可确保每次调用 DLookup 函数时,Access 都将从控件获取当前值。

Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _
"[ShipperID] = " & Forms!Shippers!ShipperID)

下一个示例使用变量 intSearch,获取值。

Dim intSearch As Integer
Dim varX As Variant
intSearch = 1
varX = DLookup("[CompanyName]", "Shippers", _
"[ShipperID] = " & intSearch)

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×