Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 混合';比如';在iif声明中使用比较器?_Sql_Ms Access - Fatal编程技术网

Sql 混合';比如';在iif声明中使用比较器?

Sql 混合';比如';在iif声明中使用比较器?,sql,ms-access,Sql,Ms Access,我试图使用查询生成器根据用户在表单上的输入来制定查询,但遇到了一个问题 我一直在使用这段代码来过滤和检查null/“ALL”字段,在这之前它工作得很好 Like IIf([Forms]![TransactionsForm]![ComboActStatus]="ALL","*", [Forms]![TransactionsForm]![ComboActStatus]) 但是当我想对表示范围的字段做同样的事情时,我遇到了一个问题。我试图这样做: IIf([forms]![TransactionsF

我试图使用查询生成器根据用户在表单上的输入来制定查询,但遇到了一个问题

我一直在使用这段代码来过滤和检查null/“ALL”字段,在这之前它工作得很好

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])
IIf([forms]![TransactionForm]![TXTAMontFrom]为Null或
[forms]![TransactionForm]![txtAmountTo]为空,
([dbo_customerQuery].[amount])类似于“*”,
([dbo_customerQuery].[amount])>=[forms]![TransactionForm]![TXTAMOUNTFORM]和

([dbo_customerQuery].[amount])除非我缺少像“*”
这样的
内容,否则所有值都将返回
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])
)
IIf([forms]![TransactionForm]![TXTAMontFrom]为Null或
[forms]![TransactionForm]![txtAmountTo]为空,
符合事实的
([dbo_customerQuery].[amount])>=[forms]![TransactionForm]![TXTAMOUNTFORM]和

[dbo_customerQuery].[amount])最终对我有效且没有访问权限的代码是:

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

[txtAmountFrom])我在查询设计器中的一个条件中做这件事,而不是在where语句中。那么我应该在iif语句之前放什么?任何东西?或者它是这样开始的吗?因为这似乎仍然不起作用。你能放进1=1或者其他一些永远为真的条件吗?我的意思是,这个版本不是说我只想要那些等于“真的”还是什么?我知道*"将返回所有内容,但我不知道如何使用类似子句来确定日期范围我很难理解为什么不能使用
true
,但您可以使用>='01-01-0001'或类似的方法来获取所有记录。^这听起来是一个有趣的解决方案。我的问题是,这会降低查询速度,从而不得不进行多次比较吗锿?