MS Access表单的单一日期范围不会产生任何结果



表单使用格式为"的开始日期和结束日期文本框;"一般日期";以过滤结果。它们通常使用日历日期选择器工具填充,格式为m/d/yyyy。从中提取日期字段的ODBC SQL表也显示了格式";"一般日期";在设计视图中,但该字段包括日期和时间,格式为m/d/yyyy H:MM:SS AM/PM。

当在表格的开始和结束日期中输入相同的日期时,它没有显示结果,但我的团队过去告诉我,它显示了结果。我假设这是由于表单日期选择器不包括时间,并且在查询运行时两个框中都默认为上午12点。如果是/可能是这种情况,是否有方法将结束日期文本框编辑为所选日期的晚上11:59:59?

10/28编辑:我被要求提供引用结束日期文本框的SQL。对于上下文:表单上的命令按钮打开查询dbo_GEN_INSP_Count_Daily,该查询基于查询dbo_GEN_INSP_Count_Monthly,其中提到了文本框。请参见下文。

查询dbo_GEN_INSP_Count_Daily

SELECT DateValue([INSP_DTE]) AS Insp_Date, Count([INSP_DTE]) AS DailyCount
FROM dbo_GEN_INSP_Count_Monthly
GROUP BY DateValue([INSP_DTE]);

查询dbo_GEN_INSP_Count_Monthly

SELECT dbo_VEHICLE.DMV_VIN_NUM, dbo_INSPECTION_GENERAL.INSP_DTE, dbo_INSPECTION_GENERAL.CI_NUM, dbo_INSPECTION_GENERAL.DMV_FACILITY_NUM, dbo_INSPECTION_GENERAL.VIP_UNIT_NUM
FROM dbo_INSPECTION_GENERAL INNER JOIN dbo_VEHICLE ON (dbo_INSPECTION_GENERAL.VIP_UNIT_NUM = dbo_VEHICLE.VIP_UNIT_NUM) AND (dbo_INSPECTION_GENERAL.DMV_FACILITY_NUM = dbo_VEHICLE.DMV_FACILITY_NUM) AND (dbo_INSPECTION_GENERAL.CI_NUM = dbo_VEHICLE.CI_NUM) AND (dbo_INSPECTION_GENERAL.INSP_DTE = dbo_VEHICLE.INSP_DTE)
WHERE (((dbo_INSPECTION_GENERAL.INSP_DTE) Between [Forms]![Form1]![StartDate] And [Forms]![Form1]![EndDate]));

我不确定它将如何处理ODBC连接,但在属性表中数据选项卡下表单的日期字段中,有一个表单的默认值,就像在MS Access表中一样。你可以试着把你的默认时间放在11:59:59,它会自动在它周围加上引号,它应该反映在你的表格中。

如果没有任何内容,您也可以在数据库本身上创建一个默认约束,以反映结束日期的11:59:59。按照这种方式,您可能需要将数据库中的时间和日期字段分解,并在MS Access中使用一个函数将它们组合在一起。这样,如果一个日期被放置在那里而没有时间,它将默认为11:59:59。

当用户为StartDateEndDate输入相同的日期时,您希望查询返回包含该日期的所有行,而不考虑与该日期一起存储的时间组件。

因此,与当前的Between ... And方法不同,将端点目标设置为EndDate之后不到一天。

WHERE
dbo_INSPECTION_GENERAL.INSP_DTE >= Forms!Form1!StartDate
And dbo_INSPECTION_GENERAL.INSP_DTE < (DateValue(Forms!Form1!EndDate) + 1)

相关内容

  • 没有找到相关文章

最新更新