Access VBA教程:DLookup函数

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

使用 Dlookup函数可以显示不在窗体或报表记录源中的字段值。例如,假定有一个基于“订单明细”表的窗体,显示“订单ID”、“产品ID”、“单价”、“数量”和“折扣”字段。而“产品名称”字段位于另一个表 (“产品”表)中。通过在计算控件中使用 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函数来指定条件。

如果需要显示的字段不在窗体或报表所基于的记录源中,也可以在窗体或报表的计算控件表达式中使用 DLookup函数。例如,假定有一个“Order Details”窗体基于“Order Details”表,并且含有一个显示“ProductID”字段的名为“ProductID”的文本框,要从基于这个文本框值的“Products”表中查阅“ProductName”字段,可以创建另一个文本框,并将它的ControlSource属性设为如下表达式:


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

提示

注意   使用该函数时,未保存在 domain 中的记录更改将不包括在内。如果要让 DLookup函数以更改后的数据为基础,必须先保存更改。方法是单击“记录”菜单上的“保存记录”命令、将焦点移到另一个控件上,或者使用 Update方法。

VBA示例

下面的示例将从满足 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 VBA教程:不同字符串值的不同格式(Format函数) 下页:Access VBA教程:DMin、DMax函数

Access VBA教程:DLookup函数

Access VBA教程:DMin、DMax函数 Access VBA教程:DStDev、DStDevP函数
Access VBA教程:DSum函数 Access VBA教程:DVar、DVarP函数
Access VBA教程:EuroConvert函数 Access VBA教程:Eval函数
Access VBA教程:GUIDFromString函数 Access VBA教程:LoadPicture方法
Access VBA教程:Nz函数 Access VBA教程:StringFromGUID函数
Access VBA教程:隐藏的语言元素 Access VBA教程:在子窗体或子报表中调用过程
Access VBA教程:将 DAO 代码转换为 ADO Access VBA教程:将 Microsoft Access 用作 DDE 服务器
Access VBA教程:错误捕获 Access VBA教程:在域聚合函数中计算字段
Access VBA教程:在 SQL 语句中使用国际日期格式 Access VBA教程:运行时错误处理的元素
Access VBA教程:设置数据访问页和控件属性 Access VBA教程:设置窗体、报表和控件的属性
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号