您可以使用 DCount 函數來判斷指定一組記錄中的記錄數目, ( 範圍) 。 在 Visual Basic for Applications (VBA) 模組、 巨集、查詢表達式或 計算控制項中使用 DCount 函數。
例如,您可以在模組中使用 DCount 函數,傳回 Orders 資料表中對應到特定日期訂單的記錄數目。
語法
DCount ( expr , domain [, criteria] )
DCount 函數語法具有下列自變數:
引數 |
描述 |
expr |
必要。 用來識別您要計算記錄之欄位的運算式。 它可以是識別資料表或查詢中欄位的 字串運算式,或可以是在該欄位的資料上執行計算的運算式。 在 expr 中,您可以加入資料表中的欄位名稱、表單上的控制項、常數或函數。 expr 可包含內建或使用者定義的函數,但不得是另一個網域彙總或 SQL 彙總函數。 |
domain |
必要。 識別構成範圍之記錄集的字串運算式。 它可以是資料表名稱,或不需要參數之查詢的查詢名稱。 |
criteria |
可省略。 用來限制 執行 DCount 函數之數據範圍的字串表達式。 例如, criteria 通常等同於 SQL 運算式中的 WHERE 子句,而沒有 WHERE 一詞。 如果省略 criteria , 則 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")
如果 網域 是具有 主索引鍵的數據表,您也可以設定主鍵欄位的 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")
附註: 安培是執行字串串連的慣用運算符。 除非您明確想要透過表達式傳播 Nulls ,否則您應該避免將加法運算子用於新增數值以外的任何專案。
使用這個函數時,不會包括 domain 中未儲存的記錄變更。 如果您希望 DCount 函數根據變更的值,您必須先儲存變更,方法是按兩下 [資料] 索引標籤上 [記錄] 下的 [儲存記錄]、將焦點移至另一筆記錄,或使用 Update 方法。
查詢範例
Expression |
結果 |
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#