Access 2003完整教程:DLookup 函数

使用DLookup函数可以从指定记录集(域)中获得特定字段的值。可以在 Visual Basic、宏、查询表达式或者窗体或报表上的计算控件中,使用DLookup.

您可以使用DLookup函数为窗体或报表显示不在记录源中的字段的值。例如,假设您有一个基于“订单明细”表 (Orders Details) 的窗体。该窗体显示订单 ID、产品 ID、单价、数量以及折扣字段。然而产品名称字段在另一个表(“产品”(Product) 表)中。您可以在计算控件中使用DLookup函数,以便在同一个窗体中显示产品名称。

DLookup(expr,domain, [criteria])

DLookup函数具有下列参数。

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

说明

DLookup函数根据 criteria 中指定的信息返回单个字段值。虽然 criteria 是可选参数,但是如果没有为 criteria 提供值,DLookup函数将返回一个域中的随机值。

如果没有记录满足 criteria 或者 domain 不包含任何记录,DLookup函数将返回Null

如果有多个字段符合 criteria,DLookup函数将返回第一个字段值。指定的条件应能确保DLookup函数返回的字段值是唯一的。有时可能需要将主键值用在条件中,例如下面的示例中的[EmployeeID],以确保DLookup函数返回一个唯一的值:

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

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

使用DLookup函数,可以在查询的“条件”(Criteria) 行中、查询的计算字段表达式内或更新查询中的“更新到”(Update To) 行中指定条件。

如果要显示的字段不在窗体或报表所基于的记录源中,也可以在窗体或报表上的计算控件内的表达式中使用DLookup函数。例如,假设您有一个基于“订单明细”表的“订单明细”(Orders Details) 窗体,其中具有一个名为 ProductID 的文本框,显示 ProductID 字段。若要根据该文本框中的值在“产品”(Products) 表中查看产品名称,应当创建另一个文本框,并将其ControlSource属性设置为以下表达式:

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

提示

注释使用该函数时,不会包含对域 中记录的未保存更改。如果要使DLookup函数基于更改后的值进行计算,必须首先通过单击“记录”菜单上的“保存记录”,然后将焦点移动到另一个记录,或者使用Update方法保存更改。

示例

下面的示例返回来自满足 criteria 的记录的 CompanyName 字段的名称信息。域是 Shippers 表。criteria 参数将记录的结果集限制为 ShipperID 等于 1 的记录。

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

下面的示例使用 Shippers 表中的窗体控件 ShipperID 来为DLookup函数提供条件。请注意,对控件的引用未包含在表示字符串的引号中。这可以确保每次调用DLookup函数时,Microsoft 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)

上页:Access 2003完整教程:DFirst、DLast 函数 下页:Access 2003完整教程:HyperlinkPart 方法

Access 2003完整教程:DLookup 函数

Access 2003完整教程:HyperlinkPart 方法Access 2003完整教程:LoadPicture 方法
Access 2003完整教程:Nz 函数Access 2003完整教程:SysCmd 方法
Access 2003完整教程:将数据透视表视图内容的格式设置成从右到左读取或从左到右读取Access 2003完整教程:窗体的“数据透视表”和“数据透视图”视图中可用的函数
Access 2003完整教程:关于在“Visual Basic 编辑器”中获取 Access 产品帮助Access 2003完整教程:获得有关 Access 事件和属性的帮助
Access 2003完整教程:页面中控件的 HTML 元素和类Access 2003完整教程:从 Microsoft Windows SharePoint Services 列表导入
Access 2003完整教程:改进 Access 项目的性能Access 2003完整教程
Access 2003完整教程:Microsoft Access 项目设计器中的消息汇总Access 2003完整教程:字段列表中没有这样的字段
Access 2003完整教程:无效的排序和分组Access 2003完整教程:词汇表
Access 2003完整教程:找不到关键字 (MDB)Access 2003完整教程:朝鲜文字转换为朝鲜文汉字
Access 2003完整教程:关于“更正键盘设置”Access 2003完整教程:将表链接到 Windows SharePoint Services 列表
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号