DCount 函數

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

您可以使用 DCount 函數來判斷網域) (指定記錄集中的記錄數目。 在 Visual Basic for Applications (VBA) 模組、巨集、查詢運算式或計算控制項中使用 DCount 函數。

例如,您可以在模組中使用 DCount 函數,傳回 [訂單] 資料表中對應到某一特定日期的訂單記錄。

語法

DCount (expr, domain* [, criteria] )

DCount 函數語法具有下列引數:

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

註解

當您不需要知道其特定值時,請使用 DCount 函數來計算網域中的記錄數目。 雖然 expr 引數可以在欄位上執行計算,但 DCount 函數只會計算記錄數目。 expr 執行的任何計算值都無法使用。

當您需要指定準則以限制執行函數的資料範圍時,請使用計算控制項中的 DCount 函數。 例如,若要顯示要出貨至加州之訂單數量,請將文字輸入框的 ControlSource 屬性設定為下列運算式:

=DCount("[OrderID]", "Orders", "[ShipRegion] = 'CA'")

如果不想要指定任何限制而只是計數 網域 中的所有記錄,可使用 Count 函數。

秘訣 Count 函數已經最佳化,可加速在查詢中計數記錄。 在查詢運算式中請使用 Count 函數 (而非 DCount 函數),並設定選擇性的準則對結果強制執行任何限制。 當您必須從程式碼模組或巨集或計算控制項中計算網域中的記錄時,請使用 DCount 函數。

您可以使用 DCount 函數來計算某個欄位出現在記錄中的次數 (即使該欄位不在您表單或報表所依據的資料來源中)。 例如,您可以在一個以 [產品] 資料表為基礎的表單上,透過計算控制項顯示 [訂單] 資料表中的訂單數量。

除非 expr 是星號 (*) 萬用字元,否則 DCount 函數不會計算 expr 所參照欄位中包含 Null 值的記錄。 如果您使用星號,DCount 函數會計算記錄總數,包括包含 Null 欄位的記錄。 下列範例會計算 Orders 資料表中的記錄數目。

intX = DCount("*", "Orders")

如果 domain 是具有主索引鍵的資料表,您也可以將 expr 設定為主索引鍵欄位來計數記錄總數,因為主索引鍵欄位絕不可能出現 Null 值。

如果 expr 識別多個欄位,請使用串連運算子(符號 (&) 或加法運算子 (+) )分隔欄位名稱。 如果您使用 & 符號來分隔欄位,DCount 函數會傳回所有列出的欄位中任何包含資料的欄位的記錄數量。 如果您使用加法運算子,DCount 函數只會傳回所有列出欄位中包含資料的記錄數目。 下列範例說明當搭配所有記錄中皆有資料 (ShipName) 的欄位和沒有資料 (ShipRegion) 的欄位使用時,這兩種運算子的效果差異。

intW = DCount("[ShipName]", "Orders")
intX = DCount("[ShipRegion]", "Orders")
intY = DCount("[ShipName] + [ShipRegion]", "Orders")
intZ = DCount("[ShipName] & [ShipRegion]", "Orders")

注意

& 符號是執行字串串連的慣用運算子。 除了純粹進行數字加總外,請避免使用加法運算子,除非您有特別的需求要透過運算式傳遞 Null

使用這個函數時,不會包括 網域 中未儲存的記錄變更。 如果想要 DCount 函數以變更的值為基礎,您必須先按一下 [資料] 索引標籤上 [記錄] 下的 [儲存記錄]、將焦點移至另一筆記錄,或使用 Update 方法來儲存變更。

查詢範例

運算式 結果
SELECT DCount("ProductID","ProductSales","Discount=0") AS Expr1 FROM ProductSales GROUP BY DCount("ProductID","ProductSales","Discount=0"); 傳回 "ProductSales" 資料表中 "ProductID" 欄位的資料筆數,條件是 "Discount" 欄位的值為 0。
SELECT DCount("ProductID","ProductSales","DateofSale=Date()-1") AS YesterdaySale FROM ProductSales GROUP BY DCount("ProductID","ProductSales","DateofSale=Date()-1"); 傳回 "ProductSales" 資料表中 "ProductID" 欄位的資料筆數,條件是 "DateofSale" 為昨天的記錄數量。

VBA 範例

注意

下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需使用 VBA 的詳細資訊,請在 [搜尋] 旁的下拉式清單中選取 [開發人員參考],並在 [搜尋] 方塊中輸入一個或多個字詞。

下列函數會傳回在指定的運送日期之後運送到指定國家/地區的訂單數目。 範圍是 [訂單] 資料表。

Public Function OrdersCount _
    (ByVal strCountryRegion As String, _
    ByVal dteShipDate As Date) As Integer
    OrdersCount = DCount("[ShippedDate]", "Orders", _
        "[ShipCountryRegion] = '" & strCountryRegion & _
        "' AND [ShippedDate] > #" & dteShipDate & "#")
End Function

若要呼叫函數,請在 [立即] 視窗中使用下列程式碼行:

:OrdersCount "UK", #1/1/96#