2016-03-28 82 views
0

我有一个查询过滤记录基于日期(开始日期和结束日期)选择在以前的形式。我希望查询过滤特定的日期范围,或者如果字段留空,则输出所有记录。查询过滤特定数据或没有过滤器如果空白

我不熟悉SQL。有没有办法添加if-then语句?

如果需要,我可以使用vba,但如果可能的话,想使用Access GUI。

+0

如果您只是需要查看您的记录,则可以使用VBA代码进行过滤。理解如何使用而不是使用SQL更容易。您可以查看https://msdn.microsoft.com/en-us/library/office/ff194672.aspx关于如何使用过滤器属性 – SunRay

回答

0

如果您有一个参数,用于WHERE子句(查询生成器中的条件),并且您希望显示所有记录(如果参数为空),则只需将此参数添加为新列,并在此条件下指示Is Null或者,最好添加一个表达式为Nz([MyParam],"") and in Condition area in OR row add“”。不幸的是在查询生成器这种结构可能是,如果你有几个参数,在SQL它看起来要简单得多,例如在你的情况下,它会是这样相当复杂:

WHERE (MyDate >= [paramDateStart] and MyDate <= [paramDateEnd]) 
     OR (Nz([paramDateStart],"")="" AND Nz([paramDateEnd],"") = "") 

有时简单编辑SQL,然后切换到设计视图

0

您可以使用这些标准起始日期结束日期分别以他们在表格上,搜索字段的情况下,一个(或两个)比较,以自己为空(NULL):

>=Nz([Forms]![YourForm]![FromDate], [StartDate]) 

<=Nz([Forms]![YourForm]![ToDate], [EndDate])