DLookup 函數

在 Access 桌面資料庫可以使用 DLookup 函數,從一組指定的記錄 (一個 範圍) 取得特定欄位的值。 在 Visual Basic for Applications (VBA) 模組、巨集、查詢運算式.或表單或報表上的 計算控制項 中使用 DLookup 函數。

附註: 本文內容不適用於 Access Web App。

您可以使用 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 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 的詳細資訊,請在 [搜尋] 旁的下拉式清單中選取 [開發人員參考],並在 [搜尋] 方塊中輸入一個或多個字詞。

下列範例會從滿足 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)
擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×