问题描述
所以我有几个表,我想根据它们的日期/时间字段进行过滤。这是我正在试验的表单控件的快照。
此报告最终可能会每月运行一次,因此过滤器“Between Forms!Sorting!OldestDate and Forms!Sorting!NewestDate”通常可以正常工作。但是,有时只在一天内运行它很有用,如图所示,在这种情况下,我需要过滤器计算出“介于 #M/D/YYYY 0:00:00# 和 #M/D/ YYYY 23:59:59#”。然而,在控件上设置格式以实际记录时间和日期尚未解决。
我想,首先,可能是因为我的文本框太小,所以时间没有显示出来,所以我尝试添加底部的文本框。快照中的显示是我想要的,但是,如果我单击文本框之外的日期,则仅显示时间。在我进入并手动添加时间之前,它也根本不显示任何时间。
有没有办法强制同时显示短日期和长时间?或者有没有办法将 NewestDate 的默认 TimeValue 设置为 23:59:59?
现在我可能拥有的唯一“解决方案”是 CVDate(CDbl(Forms!Sorting!NewestDate)+0.99999) 在我的 WHERE 子句中多次出现,这将使跟踪或发现错误变得更加困难。
我有 vba 经验,但我从未尝试过使用它来屏蔽/编辑传递给查询的表单参数。我正在通过 MS Office Professional Plus 2019 使用 Access。
解决方法
首先,在您的查询中,指定为参数:
[Forms]![Sorting]![OldestDate] DateTime,[Forms]![Sorting]![NewestDate] DateTime;
然后你可以过滤:
[YourDateField] >= [Forms]![Sorting]![OldestDate] And [YourDateField] < DateAdd("d",[Forms]![Sorting]![NewestDate])
如果 [YourDateField]
是文本,请将其更改为 DateTime。如果这是不可能的(应该是),请使用:
DateValue([YourDateField])