如何解决从 SQL Server 2008 升级到 2017 导致使用 DCount 的 Access 前端表单上的日期减法错误
我从一位多年前离开公司的员工那里继承了一个数据库支持。使用它的团队被迫从 sql Server 2008 升级到 sql Server 2017。
似乎一切正常,但有一个包含文本框的表单,使用 DCount
函数显示一些数据计数。当它试图从 Date()
的表中的 [DateReceived]
列(sql Server 中的 smalldatetime
类型)中减去今天的日期(使用 DCount
)时,问题就出现了功能。
这有效
=DCount("[ClaimNum]","tblClaimsData","[Claimstatus] = 'Open' and #2/4/2021# - [DateReceived] between 45 and 59")
这会引发错误
=DCount("[ClaimNum]","[Claimstatus] = 'Open' and Date() - [DateReceived] between 60 and 90")
我似乎无法找出问题所在的 Date()
函数的解决方法。我有一个对数据表进行计数的查询,但我无法将查询作为文本框的控制源,也无法获取另一个文本框的值来代替 {{1} 中的 Date()
} 函数。
这里有什么想法吗?谢谢!
Form with counts - the one that works has the date hard coded in the DCount function
解决方法
错误信息非常清楚。您的数据类型现在是 DateTime2,ODBC 驱动程序将其读取为文本,从而导致任何数字日期处理失败。
最好的选择是将数据类型更改为 DateTime 并且您的代码将起作用。
否则,将文本日期转换为真实日期:
=DCount("[ClaimNum]","tblClaimsData","[ClaimStatus] = 'Open' and Date() - DateValue([DateReceived]) between 60 and 90")
但是,如果文本日期包含毫秒,例如 2021-02-04 15:42:30.000
,这可能仍然失败。
如果是这样,必须在转换前将它们切掉。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。