MS Access 中的可选查询参数

问题描述

请帮助我确定以下问题的解决方案。

我想从参数中获取“Year”结果,否则如果参数为空则获取所有结果。

我在 Project_Start_Date 字段中有日期格式(MMMM - YYYY)数据。附上图片供您参考。

目前,如果参数为空,我会得到结果,如果参数是带日期输入的,则它不起作用(不给出任何结果)

我尝试了条件 - Like IIf(IsNull([Date of the Year]),"*",Year([Date of the Year]))

enter image description here

解决方法

这在这里工作:

PARAMETERS 
    [Date of Year] DateTime;
SELECT ...
FROM ...
WHERE 
    [Date of Year] Is Null Or 
    [Project_Start_Date] Between 
        DateSerial(Year(Nz([Date of Year],Date())),1,1) And 
        DateSerial(Year(Nz([Date of Year],12,31);

这将使用 [Project_Start_Date] 上的索引(如果存在)。

,

使用您的 WHERE 语句字段 Project_Start_date_Yr: Year([Project_Start_date]) 创建一个表达式,它应该可以工作。