Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

在 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 函數會針對整個範圍評估 exprcriteria 包含的任何欄位也必須是 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 函數,在查詢的 [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 VariantvarX = DLookup("[CompanyName]", _    "Shippers", "[ShipperID] = 1")

[Shippers] 資料表的下一個範例會使用表單控制項 [ShipperID] 來提供 DLookup 函數的準則。 請注意,不要以表示字串的引號括住控制項的參照。 這可確保每次調用 DLookup 函數時, 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)

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。