MS Access 2016多查询共用时间戳日期范围筛选条件的最优方案咨询
MS Access 单处修改全局日期区间的解决方案
以下是3种可落地的方案,按实施复杂度从低到高排序:
方案1:配置表方案(最推荐,无代码基础也可操作)
操作步骤:
- 新建一张仅存储1条记录的配置表,命名为
cfg_ReportDate,设置2个日期类型的字段:StartDate(统计起始日期)、EndDate(统计结束日期),填入你需要的日期区间,比如2021/8/1、2021/9/1 - 批量修改所有120个查询的SQL,把原来硬编码的日期条件
替换为History1HourAverage.TimeStamp>=#8/1/2021# AND History1HourAverage.TimeStamp<#9/1/2021#History1HourAverage.TimeStamp >= DLookup("StartDate","cfg_ReportDate") AND History1HourAverage.TimeStamp < DLookup("EndDate","cfg_ReportDate")
优势:
后续要修改日期区间时,仅需要打开cfg_ReportDate表修改对应字段值即可,所有查询会自动读取新的日期范围。
方案2:窗体绑定方案(适合有交互需求的场景)
操作步骤:
- 新建一个空白窗体,命名为
frm_DateSetting,添加2个日期选择控件,分别命名为txt_StartDate、txt_EndDate,保存窗体 - 把所有查询的日期条件替换为:
History1HourAverage.TimeStamp >= Forms!frm_DateSetting!txt_StartDate AND History1HourAverage.TimeStamp < Forms!frm_DateSetting!txt_EndDate
优势:
不需要修改表数据,运行查询前打开设置窗体选择对应日期即可,适合频繁切换日期区间的场景。
方案3:VBA自定义函数方案(适合有代码基础的用户)
操作步骤:
- 打开VBA编辑器,新建一个标准模块,写入以下代码:
Public Function GetStartDate() As Date GetStartDate = #8/1/2021# ' 需要修改时直接改这里的日期即可 End Function Public Function GetEndDate() As Date GetEndDate = #9/1/2021# ' 需要修改时直接改这里的日期即可 End Function - 把所有查询的日期条件替换为:
History1HourAverage.TimeStamp >= GetStartDate() AND History1HourAverage.TimeStamp < GetEndDate()
优势:
不需要额外建表或窗体,修改日期时仅需要修改VBA函数里的返回值即可。
修改后完整示例SQL(配置表方案):
SELECT History1HourAverage.TimeStamp, History1HourAverage.Parameter001, History1HourAverage.Value001, History1HourAverage.Parameter002, History1HourAverage.Value002, History1HourAverage.Parameter003, History1HourAverage.Value003, History1HourAverage.Parameter004, History1HourAverage.Value004 FROM History1HourAverage WHERE ( ( History1HourAverage.TimeStamp >= DLookup("StartDate","cfg_ReportDate") AND History1HourAverage.TimeStamp < DLookup("EndDate","cfg_ReportDate") ) AND ((History1HourAverage.Parameter001)="10S8MApp.nvoSpaceTemp") AND ((History1HourAverage.Parameter002)="10S9MApp.nvoSpaceTemp") AND ((History1HourAverage.Parameter003)="10S10MApp.nvoSpaceTemp") AND ((History1HourAverage.Parameter004)="10S11MApp.nvoSpaceTemp") );
内容的提问来源于stack exchange,提问作者Macangus
相关产品推荐
相关产品推荐

