DLookup 函數

套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

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

您可以使用函數來 DLookup 顯示不在表單或報表記錄來源中的欄位值。 舉例來說,假設您有一個根據 [Order Details] 資料表的表單。 表單會顯示 OrderIDProductIDUnitPriceQuantityDiscount欄位。 不過,欄位 ProductName 在另一個資料表中,也就是資料 Products 表中。 您可以在 DLookup 計算控制項中使用函數來顯示 ProductName 在相同的表單上。

語法

DLookup(expr, domain [, criteria])

DLookup函數有下列引數:

引數 描述
expr 必要。 用來識別您要傳回其值之欄位的運算式。 它可以是識別資料表或查詢中欄位的字串運算式,或可以是在該欄位的資料上執行計算的運算式。 在 expr中,您可以加入資料表中的欄位名稱、表單上的控制項、常數或函數。 如果包含函數,則 expr 可以是內建或使用者定義,但不得是另一個網域彙總或 SQL 彙總函數。
domain 必要。 字串運算式,用於識別組成網域的記錄集。 它可以是資料表名稱或不需要參數之查詢的查詢名稱。
criteria 可省略。 用來限制函數執行所在 DLookup 的資料範圍的字串運算式。 例如, criteria 通常相當於SQL運算式中的子句,但沒有單字 WHEREWHERE 。 如果您省略 criteriaDLookup 函數會 expr 針對整個範圍進行評估。 中包含的 criteria 任何欄位也必須是 中的欄位 domain。 否則, DLookup 函數會傳回 Null

註解

此函數會 DLookup 根據 中 criteria指定的資訊傳回單一欄位值。 雖然是選用的,但 criteria 如果您未提供值, DLookup 函數會在網域中傳回隨機值。

如果沒有任何記錄滿足 criteria,或如果不包含任何記錄,函數 domainDLookup 傳回 Null

如果遇到多個欄位, criteria函數會 DLookup 傳回第一個出現的欄位。 您應該指定準則,以確保傳回的 DLookup 欄位值是唯一的。 您可能需要針對準則使用主索引鍵值, [EmployeeID] 例如下列範例所示,以確保 DLookup 傳回唯一值:

Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
    "[EmployeeID] = 1")

無論您是在巨集、模組、查詢運算式或計算控制項中使用函數,請 DLookup 仔細建構 criteria 引數,讓 Access 正確進行評估。

您可以使用函數在 DLookup 查詢的 [準則 ] 列、查詢的導出欄位運算式內,或更新查詢的 [ 更新至 ] 列中指定準則。

DLookup如果需要顯示的欄位不在表單或報表所根據的記錄來源時,您也可以在表單或報表上計算控制項的運算式中使用函數。 例如,假設您有一個以 [訂單詳細資料] 資料表為基礎的 [訂單詳細資料] 表單,其中有一個名為 ProductID 顯示欄位的 ProductID 文字方塊。 若要根據文字方塊中的值從表格中Products查閱ProductName,請建立另一個文字方塊,並將其 ControlSource 屬性設定為下列運算式:

=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)

秘訣

  • 雖然您可以使用 DLookup 函數顯示外部資料表中欄位的值,但建立包含兩個資料表中所需欄位的查詢,然後根據該查詢來執行表單或報表可能會更有效率。
  • 您也可以使用 [查閱精靈] 來尋找外部資料表中的值。

注意

使用這個函數時,不會包括 中 domain 未儲存的記錄變更。 如果您想DLookup要使用變更的值,請先按一下 [資料] 索引標籤上 [記錄] 底下的 [儲存記錄],將焦點移到另一筆記錄,或使用方法來Update儲存變更。

範例

注意

下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需有關使用 VBA 的詳細資訊,請參閱 Access VBA 參考

下列範例會從滿足 的記錄欄位傳CompanyName回名稱資訊。criteria 範圍是資料表。Shippers criteria引數會將結果限制為等於 的記錄集。ShipperID1

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)