表单使用格式为"的开始日期和结束日期文本框;"一般日期";以过滤结果。它们通常使用日历日期选择器工具填充,格式为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。
当用户为StartDate
和EndDate
输入相同的日期时,您希望查询返回包含该日期的所有行,而不考虑与该日期一起存储的时间组件。
因此,与当前的Between ... And
方法不同,将端点目标设置为EndDate
之后不到一天。
WHERE
dbo_INSPECTION_GENERAL.INSP_DTE >= Forms!Form1!StartDate
And dbo_INSPECTION_GENERAL.INSP_DTE < (DateValue(Forms!Form1!EndDate) + 1)