0

我有一个组合框,您可以选择一个位置 1-7,然后将基于该位置的查询用作报告的记录源。但是,我也希望能够看到所有...所以,我有一行代码,例如:

iif(Forms!ReportCreator.Location.Value>0,Forms!ReportCreator.Location.Value,"")

但是,如果选择了“0”,我无法让它全部显示。0 是“全部”的组合框值

我明白为什么它不起作用,我想用 SQL 说:

WHERE SampleLocation = ""

这并没有给我我想要的。我试过了

"1 OR 2 OR 3 OR 4 OR 5 OR 6 OR 7" 

代替iff语句中的“”,但它仍然不起作用....有什么建议吗?

4

3 回答 3

1

一种方法是WHERE在 iif 中嵌入:

iif(Forms!ReportCreator.Location.Value>0," WHERE SampleLocation = " _ 
    & Forms!ReportCreator.Location.Value,"")

虽然这取决于你如何构建你的陈述。

于 2013-06-29T19:30:33.153 回答
1

如果您使用 VBA 创建 SQL 命令,那么它将是:

strSQL = "SELECT ... WHERE SampleLocation = " & _
          Iif(Forms!ReportCreator.Location.Value > 0, _
          Forms!ReportCreator.Location.Value,"SampleLocation")

如果你想直接在 SQL 命令中执行它,它将是:

SELECT ...
WHERE SampleLocation = iif(Forms!ReportCreator.Location.Value > 0,
                           Forms!ReportCreator.Location.Value,SampleLocation)

在这两种情况下,您都会获得指定的位置或所有位置。

于 2013-06-29T21:29:13.117 回答
0

星号通配符可能是您需要的。

Iif(Forms!ReportCreator.Location.Value>0,Forms!ReportCreator.Location.Value,"*")

如果这不是解决方案,那么我建议您尝试一些变体进行故障排除,例如:

Iif(Forms!ReportCreator.Location.Value=1,"2","3")
Iif(Forms!ReportCreator.Location.Value=0,"2","3")
Iif(Forms!ReportCreator.Location.Value<>0,"2","3")
于 2013-06-29T20:31:24.990 回答