DLookup

DLookup

DLOOKup函式用於從指定集合(一個域)中獲取符合條件的特定欄位,可以在 Visual Basic、宏、查詢表達式、窗體或報表上的計算控制項中使用 DLookup 函式。 無論是在宏、模組、查詢表達式中,還是在計算控制項中使用 DLookup 函式,都必須仔細地構造 criteria 參數,以確保能夠正確地進行計算。

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 VariantvarX = 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)

提示

雖然可以使用 DLookup 函式顯示來自外部表欄位中的值,但是通過創建包含兩表中所需欄位的查詢,然後將窗體或報表建立在這個查詢的基礎上,效率將更高。

也可以使用“查閱嚮導”來查找外部表中的值。

注釋 使用此函式時,不包括對 domain 記錄未保存的更改。如果希望 DLookup 函式基於更改後的值,必須先保存更改。方法是:單擊“記錄”選單上的“保存記錄”命令、將焦點移到另一個記錄上,或使用 Update 方法。

示例

下面的示例將從滿足 criteria 內容記錄的“CompanyName”欄位中返回名稱信息。域為“Shippers”表。criteria 參數將結果記錄集限制為“ShipperID”等於 1 的記錄。

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

下一個示例來自 Shippers 表,它使用窗體控制項 ShipperID 來為 DLookup 函式提供條件。請注意,控制項的兩側未加上用以表示字元串的引號,這樣可以確保每次調用 DLookup 函式時,Microsoft Access都將從控制項中獲取當前值。

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

下一個示例使用變數 intSearch 來獲取值。

Dim intSearch As IntegerDim varX As VariantintSearch = 1varX = DLookup("[CompanyName]", "Shippers", _"[ShipperID] = " & intSearch)看書累的,要是看上不怎么樣的書就更累了,還是看系統幫助吧!(2007-01-25 14:58:06) 竹笛(56217686)Stemp = DLookup("[用戶編號]","系統用戶","[用戶編號]=""''''''''''''''''''''''''''''''"& Me![用戶編號] &"''''''''''''''''''''''''''''''''") 的意思是 找出 系統用戶 表中 用戶編號欄位等於 x 的 用戶編號,不也就是x嘛 (2007-01-25 14:58:51) 竹笛(56217686)Stemp = DLookup("[用戶名]","系統用戶","[用戶編號]=""''''''''''''''''''''''''''''''"& Me![用戶編號] &"''''''''''''''''''''''''''''''''") 的意思是 找出 系統用戶 表中 用戶編號欄位等於 x 的 用戶名 繼續學習......

相關詞條

熱門詞條

聯絡我們