DLookup 函數(shù)用于從指定記錄集(一個(gè)域)獲取特定字段的值??梢栽?Visual Basic、宏、查詢表達(dá)式、窗體或報(bào)表上的計(jì)算控件中使用 DLookup 函數(shù)。
使用 Dlookup 函數(shù)可以顯示不在窗體或報(bào)表記錄源中的字段值。例如,假定有一個(gè)基于“訂單明細(xì)”表的窗體,顯示“訂單ID”、“產(chǎn)品ID”、“單價(jià)”、“數(shù)量”和“折扣”字段。而“產(chǎn)品名稱”字段位于另一個(gè)表 (“產(chǎn)品”表)中。通過在計(jì)算控件中使用 Dlookup 函數(shù),可以在同一窗體上顯示“產(chǎn)品名稱”。
DLookup(expr, domain, [criteria])
DLookup 函數(shù)具有下列參數(shù):
參數(shù) |
說明 |
expr |
一個(gè)表達(dá)式,用于標(biāo)識(shí)需要返回其值的字段。它既可以是用于標(biāo)識(shí)表或查詢中字段的字符串表達(dá)式,也可以是以該字段上的數(shù)據(jù)進(jìn)行計(jì)算的表達(dá)式。在 expr 中,可以包括表中字段的名稱、窗體上的控件、常量或函數(shù)。如果 expr 包含函數(shù),那么它可以是內(nèi)置的,也可以是用戶定義的,但不能是另一個(gè)域聚合函數(shù)或 SQL 聚合函數(shù)。 |
字符串表達(dá)式,代表組成域的記錄集??梢允潜砻Q或不需要參數(shù)的查詢名稱。 |
|
criteria |
可選的字符串表達(dá)式,用于限制 DLookup 函數(shù)執(zhí)行的數(shù)據(jù)范圍。例如,criteria 通常等價(jià)于 SQL 表達(dá)式中的 WHERE 子句,只是不含 WHERE 關(guān)鍵字。如果忽略 criteria,DLookup 函數(shù)將在整個(gè)域范圍內(nèi)計(jì)算 expr。任何包含在 criteria 中的字段必須同時(shí)也是 domain 中的字段,否則 Dlookup 函數(shù)將返回 Null。 |
DLookup 函數(shù)將基于 criteria 中指定的信息返回單個(gè)字段的值。雖然 criteria 是可選參數(shù),但如果不給 criteria 提供值,Dlookup 函數(shù)將返回域中的一個(gè)隨機(jī)值。
如果沒有記錄滿足 criteria,或者 domain 中沒有記錄,DLookup 函數(shù)將返回 Null。
如果有多個(gè)字段滿足 criteria,DLookup 函數(shù)將返回第一個(gè)匹配字段。所以應(yīng)該指定條件以確保 DLookup 函數(shù)返回的字段值是唯一的??梢栽跅l件中使用主鍵值,在下例中,使用 [EmployeeID] 來確保 DLookup 函數(shù)返回唯一的值:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", "[EmployeeID] = 1")
無論是在宏、模塊、查詢表達(dá)式中,還是在計(jì)算控件中使用 DLookup 函數(shù),都必須仔細(xì)地構(gòu)造 criteria 參數(shù),以確保能夠正確地進(jìn)行計(jì)算。
在查詢的“條件”行、查詢的計(jì)算字段表達(dá)式中或更新查詢的“更新到”行中均可以使用 DLookup 函數(shù)來指定條件。
如果需要顯示的字段不在窗體或報(bào)表所基于的記錄源中,也可以在窗體或報(bào)表的計(jì)算控件表達(dá)式中使用 DLookup 函數(shù)。例如,假定有一個(gè)“Order Details”窗體基于“Order Details”表,并且含有一個(gè)顯示“ProductID”字段的名為“ProductID”的文本框,要從基于這個(gè)文本框值的“Products”表中查閱“ProductName”字段,可以創(chuàng)建另一個(gè)文本框,并將它的 ControlSource 屬性設(shè)為如下表達(dá)式:
=DLookup("[ProductName]", "Products", "[ProductID] =" _
& Forms![Order Details]!ProductID)
提示
? | 雖然可以使用 DLookup 函數(shù)顯示來自外部表字段中的值,但是通過創(chuàng)建包含兩表中所需字段的查詢,然后將窗體或報(bào)表建立在這個(gè)查詢的基礎(chǔ)上,效率將更高。 |
? | 也可以使用“查閱向?qū)А眮聿檎彝獠勘碇械闹怠?/span> |
注釋 使用此函數(shù)時(shí),不包括對(duì) domain 記錄未保存的更改。如果希望 DLookup 函數(shù)基于更改后的值,必須先保存更改。方法是:?jiǎn)螕?/span>“記錄”菜單上的“保存記錄”命令、將焦點(diǎn)移到另一個(gè)記錄上,或使用 Update 方法。
下面的示例將從滿足 criteria 內(nèi)容記錄的“CompanyName”字段中返回名稱信息。域?yàn)椤癝hippers”表。criteria 參數(shù)將結(jié)果記錄集限制為“ShipperID”等于 1 的記錄。
Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", "[ShipperID] = 1")
下一個(gè)示例來自 Shippers 表,它使用窗體控件 ShipperID 來為 DLookup 函數(shù)提供條件。請(qǐng)注意,控件的兩側(cè)未加上用以表示字符串的引號(hào),這樣可以確保每次調(diào)用 DLookup 函數(shù)時(shí),Microsoft Access 都將從控件中獲取當(dāng)前值。
Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", "[ShipperID] = " _
& Forms!Shippers!ShipperID)
下一個(gè)示例使用變量 intSearch 來獲取值。
Dim intSearch As Integer
Dim varX As Variant
intSearch = 1
varX = DLookup("[CompanyName]", "Shippers", _
"[ShipperID] = " & intSearch)