使用 Dcount 函數(shù)可以確定特定記錄集(一個(gè)域)中的記錄數(shù)。可以在 Visual Basic、宏、查詢表達(dá)式,或計(jì)算控件中使用 DCount 函數(shù)。
例如,可以在模塊中使用 Dcount 函數(shù),以返回“訂單”表中對應(yīng)于特定日期的訂單數(shù)。
DCount(expr, domain, [criteria])
DCount 函數(shù)具有下列參數(shù):
參數(shù) |
說明 |
expr |
一個(gè)表達(dá)式,代表要統(tǒng)計(jì)其記錄數(shù)的字段??梢允菢?biāo)識表或查詢中字段的字符串表達(dá)式,也可以是對該字段上的數(shù)據(jù)進(jìn)行計(jì)算的表達(dá)式。在 expr 中可以包括表中字段的名稱、窗體上的控件、常量或函數(shù)。如果 expr 包括函數(shù),它既可以是內(nèi)置的,也可以是用戶定義的,但不能是另一個(gè)域聚合函數(shù)或 SQL 聚合函數(shù)。 |
domain |
字符串表達(dá)式,代表組成域的記錄集??梢允潜砻Q或不需要參數(shù)的查詢名稱。 |
criteria |
可選的字符串表達(dá)式,用于限制 DCount 函數(shù)執(zhí)行的數(shù)據(jù)范圍。例如,criteria 通常等價(jià)于 SQL 表達(dá)式中的 WHERE 子句,只是不含 WHERE 關(guān)鍵字。如果忽略 criteria,DCount 函數(shù)在整個(gè)域的范圍內(nèi)計(jì)算 expr。任何包含在 criteria 中的字段必須同時(shí)也是 domain 中的字段;否則 Dcount 函數(shù)將返回 Null。 |
在不需要知道記錄特定值的時(shí)候,可以使用 DCount 函數(shù)來計(jì)算域中的記錄數(shù)。雖然 expr 參數(shù)可以對字段執(zhí)行計(jì)算,但 DCount 函數(shù)只返回記錄數(shù)。任何由 expr 執(zhí)行計(jì)算所得的值都是不可用的。
當(dāng)需指定條件來限制函數(shù)執(zhí)行的數(shù)據(jù)范圍時(shí),應(yīng)在計(jì)算控件中使用 DCount 函數(shù)。例如,要顯示運(yùn)往 California 的訂單數(shù),可將文本框的 ControlSource 屬性設(shè)為如下表達(dá)式:
=DCount("[OrderID]", "Orders", "[ShipRegion] = 'CA'")
如果只是統(tǒng)計(jì) domain 中的所有記錄而不指定任何限制,則可以使用 Count 函數(shù)。
使用 DCount 函數(shù)可以計(jì)算包含特定字段的記錄數(shù),該字段不在窗體或報(bào)表所基于的記錄源中。例如,在基于“產(chǎn)品”表的窗體中,其計(jì)算控件中可以顯示“訂單”表中的訂單數(shù)。
DCount 函數(shù)在計(jì)數(shù)記錄時(shí),不包括由 expr 引用的字段中含有 Null 值的記錄,除非 expr 參數(shù)為星號(*)通配符。如果使用了星號,DCount 函數(shù)將計(jì)算所有記錄的總數(shù),包括含有 Null 字段的記錄。下面的示例將計(jì)算“Orders”表中的記錄數(shù)。
intX = DCount("*", "Orders")
如果 domain 是一個(gè)包含主鍵的表,也可以將 expr 設(shè)為主鍵字段來計(jì)算總記錄數(shù),因?yàn)橹麈I字段不可能為 Null。
如果 expr 指定多個(gè)字段,應(yīng)使用連接運(yùn)算符分隔各字段名,即和字符(&)或加號運(yùn)算符(+)。如果使用(&)分隔字段,Dcount 函數(shù)將返回在列出的任一字段中含有數(shù)據(jù)的記錄數(shù)。如果使用加號運(yùn)算符,Dcount 函數(shù)將只返回在所有列出字段中都含有數(shù)據(jù)的記錄數(shù)。下面的示例說明了使用這兩種運(yùn)算符的結(jié)果,它們連接所有記錄中均包含數(shù)據(jù)的字段(ShipName)和不包含數(shù)據(jù)的字段(ShipRegion)。
intW = DCount("[ShipName]", "Orders")
intX = DCount("[ShipRegion]", "Orders")
intY = DCount("[ShipName] + [ShipRegion]", "Orders")
intZ = DCount("[ShipName] & [ShipRegion]", "Orders")
注釋 和字符(&)在執(zhí)行字符串連接時(shí)是首選的運(yùn)算符。在除加法以外的其他情況下,應(yīng)盡量避免使用加法運(yùn)算符,除非特地需要在表達(dá)式中產(chǎn)生 Null 值。
使用該函數(shù)時(shí),domain 中未保存更改的記錄將不包括在內(nèi)。如果要讓 DCount 函數(shù)以更改后的數(shù)據(jù)為基礎(chǔ),必須先保存更改。方法是單擊“記錄”菜單上的“保存記錄”,或是將焦點(diǎn)移動(dòng)到另一個(gè)控件,或使用 Update 方法。
下面的函數(shù)返回在發(fā)貨日期之后發(fā)送到指定國家/地區(qū)的訂單數(shù)量。域?yàn)椤癘rders”表。
Public Function OrdersCount(ByVal strCountry As String, _
ByVal dteShipDate As Date) As Integer
OrdersCount = DCount("[ShippedDate]", "Orders", _
"[ShipCountry] = '" & strCountry & _
"' AND [ShippedDate] > #" & dteShipDate & "#")
End Function
若要調(diào)用該函數(shù),請?jiān)凇傲⒓础贝翱谥惺褂孟铝写a:
:OrdersCount "UK", #1/1/96#