MS Access 表单日期/时间输入问题

问题描述

所以我有几个表,我想根据它们的日期/时间字段进行过滤。这是我正在试验的表单控件的快照。

Snapshot of form

此报告最终可能会每月运行一次,因此过滤器“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])