试图从名为“ComplaintsListMaster”的表中获取“ComplaintDate”大于 2015 年 11 月 1 日的所有记录的计数。正确的值是 70 左右。但是当我使用下面粘贴的 dcount 时,它返回 3951,这几乎是表中的每条记录。
DCount("[ID]", "[ComplaintsListMaster]", "[ComplaintDate] >= 11/1/2015")
有什么明显的错误吗?
我们将 MS Access 前端用于 SQL Server 后端
您可能没有硬编码日期,因此请遵循此一般指南。
此外,DCount
不需要查找字段:
Dim FilterDate As Date
Dim FilterDateSql As String
FilterDate = DateSerial(Year(Date), Month(Date), 1)
FilterDateSql = Format(FilterDate, "yyyy\/mm\/dd")
DCount("*", "[ComplaintsListMaster]", "[ComplaintDate] >= #" & FilterDateSql & "#")
将日期括在 中#
,并始终在 VBA 中以美国方式 (mm/dd/yyyy) 编写您的日期:
DCount("[ID]", "[ComplaintsListMaster]", "[ComplaintDate] >= #11/1/2015#")
表示 >= Nov-1。
在这种情况下,SQL Server 后端没有影响。
您是否尝试过以下方法:
DCount("[ID]", "[ComplaintsListMaster]", "[ComplaintDate] >= #" & 11/1/2015 & "#")
日期包含在#date#
数字符号中,类似于字符串包含在单引号/撇号中的方式'string'
。
我不确定为什么你需要两个等于或大于符号=>11/1/2015
。我个人会使用>10/1/2015
.
DCount("[ID]", "[ComplaintsListMaster]", "[ComplaintDate] > #" & 10/1/2015 & "#")
但两者都应该工作,所以我猜只是个人喜好。
编辑
我刚刚意识到我假设 dd/mm/yyyy 并且您可能正在使用 mm/dd/yyyy 所以在这种情况下,我的答案是>10/31/2015
.