在 Access 桌面資料庫中,您可以使用 DLookup 函數從指定的記錄集取得特定欄位的值, ( 範圍) 。 在 Visual Basic for Applications (VBA) 模組、 巨集、查詢表達式或窗體或報表上的 計算控制項 中使用 DLookup 函數。
您可以使用 DLookup 函數,顯示不在表單或報表的記錄來源中的欄位值。 舉例來說,假設您有一個根據 [Order Details] 資料表的表單。 此表單會顯示 [OrderID]、[ProductID]、[UnitPrice]、[Quantity] 和 [Discount] 欄位。 不過,[ProductName] 欄位位於另一個資料表,即 [Products] 資料表。 您可以使用計算控制項中的 DLookup 函數,在相同的表單上顯示 ProductName。
語法
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 函數。 例如,假設您有 [Order Details] 表單,其根據顯示 [ProductID] 欄位的 [ProductID] 文字方塊所屬的 [Order Details] 資料表。 若要根據文字方塊中的值來查詢 [Products] 資料表的 [ProductName],您可能會建立另一個文字方塊,並將其 [ControlSource] 屬性設定為下列運算式:
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
提示
-
雖然您可以使用 DLookup 函數來顯示 外部資料表 中欄位的值,但同時從兩個資料表中建立包含所需欄位的查詢,然後根據該查詢來執行表單或報表可能會更有效率。
-
您也可以使用 [查閱精靈] 來尋找外部資料表中的值。
附註: 使用這個函數時,不會包括 domain 中未儲存的記錄變更。 如果想要 DLookup 函數以變更的值為基礎,您必須先儲存變更,方法是按一下 [資料] 索引標籤的 [記錄] 底下的 [儲存記錄],將焦點移到另一筆記錄,或是使用 [更新] 方法。
範例
附註: 下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需使用 VBA 的詳細資訊,請參閱 Access VBA 參考。
下列範例會從滿足 criteria 之記錄的 [CompanyName] 欄位中傳回名稱資訊。 範圍是 [Shippers] 資料表。 criteria 引數會將結果限制為 [ShipperID] 等於 1 的記錄。
Dim varX As Variant
varX = DLookup("[CompanyName]", _ "Shippers", "[ShipperID] = 1")
[Shippers] 資料表的下一個範例會使用表單控制項 [ShipperID] 來提供 DLookup 函數的準則。 請注意,不要以表示字串的引號括住控制項的參照。 這可確保每次調用 DLookup 函數時, 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)