首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当系统日期格式为dd/mm/yyyy时,MS Access报表无法按日期字段过滤

当系统日期格式为dd/mm/yyyy时,MS Access报表无法按日期字段过滤
EN

Stack Overflow用户
提问于 2021-11-08 22:51:04
回答 2查看 82关注 0票数 0

在Access中,我有一个包含日期时间字段的报表。有一个表单用于收集查询的用户输入,具体地说就是查询的FromTo日期。

使用以下代码打开报告:

代码语言:javascript
运行
复制
Dim str as String
str = "DateCreated BETWEEN #" & format(From_Date.value, "yyyy-mm-dd") & "# AND #" & DateAdd("d", 1, format(To_Date.value, "yyyy-mm-dd")) & "#"
DoCmd.OpenReport "report_name", acViewReport, WhereCondition:=str

在日期格式为mm/dd/yyyy或yyyy-mm-dd的windows计算机上,查询工作正常。但是,有些用户将系统日期设置为dd/mm/yyyy,Access似乎无法识别它。因此,当打开报告并应用筛选器时,它的读数是2021年8月11日的08/11/2021 (2021年11月8日),这显然给出了错误的结果。

我尝试使用以下内容为WHERE条件设置日期输入的格式:

建议的解决方案是使用代码format(From_Date.value, "yyyy-mm-dd")格式化日期,但这是不起作用的。

为什么Access不支持dd/mm/yyyy格式?如果没有,那么我如何正确地按日期范围进行过滤呢?

是调整用户系统日期格式的唯一选项吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2021-11-09 11:07:23

始终使用参数,切勿将格式化日期连接到SQL字符串。

如果在SQL字符串中使用格式化日期,那么意外出错的可能性很大。

代码语言:javascript
运行
复制
Dim str as String
str = "DateCreated BETWEEN p1 AND p2"
DoCmd.SetParameter "p1", From_Date.value
DoCmd.SetParameter "p2", DateAdd("d", 1, To_Date.value)
DoCmd.OpenReport "report_name", acViewReport, WhereCondition:=str

在Access中阅读有关参数的更多信息:How do I use parameters in VBA in the different contexts in Microsoft Access?

票数 3
EN

Stack Overflow用户

发布于 2021-11-08 22:55:19

您可以使用其中一个general date format codes (而不是自定义格式字符串)来使用系统格式。

代码语言:javascript
运行
复制
Dim str as String
str = "DateCreated BETWEEN #" & format(From_Date.value, "Long Date") & "# AND #" & DateAdd("d", 1, format(To_Date.value, "Long Date")) & "#"
DoCmd.OpenReport "report_name", acViewReport, WhereCondition:=str
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69890844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档