查询以过滤特定数据,如果为空则不过滤

时间:2016-03-28 12:39:05

标签: ms-access

我有一个查询,根据前一个表单中选择的日期(开始日期和结束日期)过滤记录。我希望查询过滤特定的日期范围,或者如果字段留空则输出所有记录。

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

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

2 个答案:

答案 0 :(得分:0)

如果表单上的一个(或两个)搜索字段为空,则可以分别使用 StartDate EndDate 的这些条件将它们与自身进行比较(Null) ):

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

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

答案 1 :(得分:0)

如果您有一个参数,在WHERE子句(查询构建器中的条件)中使用,并且您希望在参数为空时显示所有记录,只需将此参数添加为新列,并将def prime(int x): if x < 0: x *= -1 i = 2 while i*i <= x: if x % i == 0: return False i += 1 return True 条件添加到{{1}或者,更好地添加一个表达式ORIs Null“”`的列。不幸的是在查询构建器中,如果你有很少的参数,这个结构可能会非常复杂,在SQL中看起来要简单得多,例如在你的情况下它会是这样的:

Nz([MyParam],"") and in Condition area in

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