可以使用 DCount 函数来确定指定记录集中的记录数, ( 域 ) 。 在 Visual Basic for Applications (VBA) 模块、 宏 、查询表达式或 计算控件 中使用 DCount 函数。
例如,可以使用模块中的 DCount 函数返回 Orders 表中对应于特定日期下达的订单的记录数。
语法
DCount ( expr 、域 [, criteria] )
DCount 函数语法具有以下参数:
参数 |
说明 |
expr |
必需。 一个表达式,标识要对其计数记录的字段。 它可以是标识表或查询中的字段的 字符串表达式 ,也可以是对该字段中的数据执行计算的表达式。 在 expr 中,可以在表中包括字段的名称、窗体上的控件、常量或函数。 如果 expr 包含函数,它可以是内置函数或用户定义的函数,但不能是其他域聚合函数或 SQL 聚合函数。 |
域 |
必需。 一个字符串表达式,标识构成域的记录集。 它可以是表名,也可以是不需要参数的查询的查询名称。 |
条件 |
可选。 一个字符串表达式,用于限制对其执行 DCount 函数的数据范围。 例如, 条件 通常等效于 SQL 表达式中的 WHERE 子句,而不使用 WHERE 一词。 如果省略 条件 , 则 DCount 函数将针对整个域评估 expr 。 条件中包含的任何字段也必须是域中的字段;否则,DCount 函数返回 Null。 |
备注
当你不需要知道记录的特定值时,使用 DCount 函数对域中的记录数进行计数。 尽管 expr 参数可以对字段执行计算,但 DCount 函数只是统计记录数。 expr 执行的任何计算的值都不可用。
需要指定条件以限制执行函数的数据范围时,请在计算控件中使用 DCount 函数。 例如,若要显示要寄送到加州的订单数,请将文本框的 ControlSource 属性设置为以下表达式:
=DCount("[OrderID]", "Orders", "[ShipRegion] = 'CA'")
如果只想在未指定任何限制的情况下对 域中 的所有记录进行计数,请使用 Count 函数。
提示 Count 函数已经过优化,可加快查询中的记录计数速度。 在查询表达式中使用 Count 函数而不是 DCount 函数,并设置可选条件以对结果强制实施任何限制。 当必须从代码模块或宏中或在计算控件中对域中的记录进行计数时,请使用 DCount 函数。
可以使用 DCount 函数对包含特定字段的记录数进行计数,这些字段不在窗体或报表所基于的记录源中。 例如,可以在基于 Products 表的窗体上的计算控件中显示 Orders 表中的订单数。
除非 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 函数基于更改的值,必须先通过单击“数据”选项卡上的“记录”下的“保存记录”、将焦点移到另一条记录或使用 Updatee 方法保存更改。
查询示例
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 YesterdaySales FROM ProductSales GROUP BY DCount (“ProductID”,“ProductSales”,“DateofSale=Date () -1”) ; |
返回表“ProductSales”字段“ProductID”中的值计数,其中“DateofSale”是当前日期的前一天。 |
VBA 示例
注意: 以下示例演示了如何在 Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在搜索旁边的下拉列表中选择“开发人员参考”,并在搜索框中输入一个或多个术语。
以下函数返回指定发货日期后发往指定国家/地区的订单数。 域是 Orders 表。
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#