Comments: Switch(((IIf(([qty_req]-[qty_on_hand])<0,0,([qty_req]-[qty_on_hand])))=0) And ((([qty_on_hand]-[qty_req])/[qty_req])<=0.2),"Please check manually")
我一直在努力解决这个问题。我不断收到错误“这个表达式输入错误,或者它太复杂而无法评估。例如,数字表达式可能包含太多复杂的元素。请尝试通过将表达式的一部分分配给变量来简化表达式。”我试过打破表达式,看看是否有一个支架我错了地方,但我无法弄明白。
注意:“注释”一词只是字段名称(我主要使用MS Access中的设计视图)。
更新 - 这背后的目标是最终为此switch语句添加更多条件,但是第一个没有工作,所以这就是为什么看起来使用一个没有意义Switch
。此外,在伪代码中,这就是这个表达式的意图:
Switch([TransferQTY]=0 And [Req is within 20% of Inventory], "Please check manually")
关于第一次IIF声明:
IIf([Req-Inventory is negative, that means that we have enough on hand and don't need to send],0, [Req-Inventory])
答案 0 :(得分:0)
第一个IIF只是奇怪的构建并且有一些冗余。第二个可能会给你奇怪的答案,因为你的分子周围没有副词。正如它的编写,它可以简化为:
至于第一个IIF
,您说明了
&#34; IIf([Req-Inventory是否定的,这意味着我们已经足够了 手,不需要发送,0,[需求库存])&#34;
在switch(psuedo-coded)的上下文中:
开关([TransferQTY] = 0并且[Req在库存的20%范围内],&#34;请 手动检查&#34;)
这基本上是说&#34;如果quantity requested
减去quantity on hand
小于或等于0&#34;,那么代替IIF来做&#34;小于或等于&#34;位,只需使用<=
:
Switch(((qty_req - qty_on_hand) <= 0) AND (((qty_on_hand - qty_req)/qty_req) <= 0.2), "Please Check Manually")
这样做会更好,因为Access正在考虑复杂性。这大大降低了复杂性并完成了同样的事情。
此外,我对这里的parantheses有点沉重。您可以删除描述AND
函数正在评估的每个条件的那些,并且没有问题。
我已经删除了这里没有使用此答案的先前版本中的开关的位,因为OP声明在此位开始工作后将使用switch()
。
答案 1 :(得分:0)
我认为这只是一张支票:
IIf([qty_req]-[qty_on_hand]<0 And ([qty_on_hand]-[qty_req])/[qty_req]<=0.2,"Please check manually","") AS Comments