Access VBA教程:DCount函数

使用 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函数。

提示   Count函数是经过优化的,可以加快在查询中对记录数进行统计的速度。所以应在查询表达式中使用 Count函数来代替 DCount函数,并设置可选的条件以实施对结果的限制。如果必须从代码模块、宏或计算控件中对域中的记录进行计数时,应该使用 DCount函数。

使用 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方法。

VBA示例

下面的函数返回在发货日期之后发送到指定国家/地区的订单数量。域为“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#

上页:Access VBA教程:DAvg函数 下页:Access VBA教程:DDE函数

Access VBA教程:DCount函数

Access VBA教程:DDE函数 Access VBA教程:DDEInitiate函数
Access VBA教程:DDERequest函数 Access VBA教程:DDESend函数
Access VBA教程:DFirst、DLast函数 Access VBA教程:不同字符串值的不同格式(Format函数)
Access VBA教程:DLookup函数 Access VBA教程:DMin、DMax函数
Access VBA教程:DStDev、DStDevP函数 Access VBA教程:DSum函数
Access VBA教程:DVar、DVarP函数 Access VBA教程:EuroConvert函数
Access VBA教程:Eval函数 Access VBA教程:GUIDFromString函数
Access VBA教程:LoadPicture方法 Access VBA教程:Nz函数
Access VBA教程:StringFromGUID函数 Access VBA教程:隐藏的语言元素
Access VBA教程:在子窗体或子报表中调用过程 Access VBA教程:将 DAO 代码转换为 ADO
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号