2014-07-21 43 views
0

我试图使用查询生成器来基于表单上的用户输入来制定查询,但我遇到了问题。在iif声明中将“Like”与比较器混合?

我一直在使用这段代码来过滤和检查之前工作正常的空/“所有”字段。

Like IIf([Forms]![TransactionsForm]![ComboActStatus]="ALL","*", 
[Forms]![TransactionsForm]![ComboActStatus]) 

但是我遇到了一个问题,当我想用​​表示范围的字段做同样的事情时。我试过这个:

IIf([forms]![TransactionsForm]![txtAmountFrom] Is Null Or 
[forms]![TransactionsForm]![txtAmountTo] Is Null, 
([dbo_customerQuery].[amount]) Like "*", 
([dbo_customerQuery].[amount])>=[forms]! [TransactionsForm]![txtAmountFrom] And 
([dbo_customerQuery].[amount])<=[Forms]![TransactionsForm]![txtAmountTo]) 

但它导致我的整个查询失败。我怎么能做这个类似的事情?在空情况下使用“Like *”(返回所有内容),但在第二种情况下使用比较器而不是“like”语句?

回答

0

终于为我工作,并没有获得其切分为单独的行中的代码:

>=IIf([forms]![TransactionsForm]![txtAmountFrom] Is Null,0,[forms]![TransactionsForm]! 
[txtAmountFrom]) And <=IIf([forms]![TransactionsForm]![txtAmountTo] Is Null,9999999999, 
[forms]![TransactionsForm]![txtAmountTo]) 
0

除非我失去了一些东西LIKE "*"将返回true对于所有的值,所以这应该工作:

IIf([forms]![TransactionsForm]![txtAmountFrom] Is Null Or 
    [forms]![TransactionsForm]![txtAmountTo] Is Null, 
true, 
([dbo_customerQuery].[amount])>=[forms]! [TransactionsForm]![txtAmountFrom] And 
[dbo_customerQuery].[amount])<=[Forms]![TransactionsForm]![txtAmountTo]) 
) 
+0

我在查询设计器中的条件内进行此操作,而不是where语句。那么,我在iif声明之前放什么?什么?或者它是如何开始的?由于这仍然不起作用。 – user3790592

+0

你可以把1 = 1或其他一些标准永远是真的吗? –

+0

它似乎仍然没有工作 – user3790592