DLookup 函數(shù)

此頁沒有內(nèi)容條目
內(nèi)容

expandtri全部顯示

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ù)。

domain

字符串表達(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)