使用 Dcount 函数可以确定特定记录集(一个域)中的记录数。可以在 Visual Basic、宏、查询表达式,或计算控件中使用 DCount 函数。
例如,可以在模块中使用 Dcount 函数,以返回“订单”表中对应于特定日期的订单数。
DCount(expr, domain, [criteria])
DCount 函数具有下列参数:
参数 |
说明 |
expr |
一个表达式,代表要统计其记录数的字段。可以是标识表或查询中字段的字符串表达式,也可以是对该字段上的数据进行计算的表达式。在 expr 中可以包括表中字段的名称、窗体上的控件、常量或函数。如果 expr 包括函数,它既可以是内置的,也可以是用户定义的,但不能是另一个域聚合函数或 SQL 聚合函数。 |
domain |
字符串表达式,代表组成域的记录集。可以是表名称或不需要参数的查询名称。 |
criteria |
可选的字符串表达式,用于限制 DCount 函数执行的数据范围。例如,criteria 通常等价于 SQL 表达式中的 WHERE 子句,只是不含 WHERE 关键字。如果忽略 criteria,DCount 函数在整个域的范围内计算 expr。任何包含在 criteria 中的字段必须同时也是 domain 中的字段;否则 Dcount 函数将返回 Null。 |
在不需要知道记录特定值的时候,可以使用 DCount 函数来计算域中的记录数。虽然 expr 参数可以对字段执行计算,但 DCount 函数只返回记录数。任何由 expr 执行计算所得的值都是不可用的。
当需指定条件来限制函数执行的数据范围时,应在计算控件中使用 DCount 函数。例如,要显示运往 California 的订单数,可将文本框的 ControlSource 属性设为如下表达式:
=DCount("[OrderID]", "Orders", "[ShipRegion] = 'CA'")
如果只是统计 domain 中的所有记录而不指定任何限制,则可以使用 Count 函数。
使用 DCount 函数可以计算包含特定字段的记录数,该字段不在窗体或报表所基于的记录源中。例如,在基于“产品”表的窗体中,其计算控件中可以显示“订单”表中的订单数。
DCount 函数在计数记录时,不包括由 expr 引用的字段中含有 Null 值的记录,除非 expr 参数为星号(*)通配符。如果使用了星号,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 值。
使用该函数时,domain 中未保存更改的记录将不包括在内。如果要让 DCount 函数以更改后的数据为基础,必须先保存更改。方法是单击“记录”菜单上的“保存记录”,或是将焦点移动到另一个控件,或使用 Update 方法。
下面的函数返回在发货日期之后发送到指定国家/地区的订单数量。域为“Orders”表。
Public Function OrdersCount(ByVal strCountry As String, _
ByVal dteShipDate As Date) As Integer
OrdersCount = DCount("[ShippedDate]", "Orders", _
"[ShipCountry] = '" & strCountry & _
"' AND [ShippedDate] > #" & dteShipDate & "#")
End Function
若要调用该函数,请在“立即”窗口中使用下列代码:
:OrdersCount "UK", #1/1/96#