我有一个IIf语句应该做我想做的事情,但它过于复杂,所以我需要另一种方法来编写这段代码。我试过一个switch语句但是有同样的问题。代码的目的很难解释,但我会尽量保持简单,因为我发现上下文在搜索解决方案时很重要。
基本上,我正在使用查询来输出可用作模拟矩阵的数据表。它需要能够定制,即5x5,7x7,10x10等,显示的值需要改变以反映尺寸。查询从中获取的一个表只是数字值,我使用它来确定该字段的输出。还有一个标记为“[Matrix Size]”的字段确定尺寸。最终,这也将决定根据这些维度显示哪些信息,但我还没有那么远。过于复杂的IIf声明如下。
IIf([Matrix Size]<=0," ",
IIf([Impact]=0,"1",
IIf([Impact]+[Likelihood]=2,"Low",
IIf([Matrix Size]<2," ",
IIf([Impact]+[Likelihood]=3,"Low",
IIf([Matrix Size]<3," ",
IIf([Impact]+[Likelihood]=4,"Low",
IIf([Matrix Size]<4," ",
IIf([Impact]+[Likelihood]=5,"Low",
IIf([Matrix Size]<5," ",
IIf([Impact]+[Likelihood]=6,"Low",
IIf([Matrix Size]<6," ",
IIf([Impact]+[Likelihood]=7,"Low",
IIf([Matriz Size]<7," ",
IIf([Impact]+[Likelihood]=8,"Low","Error")))))))))))))))
如果有人知道一种简化此方法的方法/另一种方法,那么访问不会太复杂,请告诉我。任何帮助表示赞赏。
对于Clarity,如果需要:
第二个IIf用于将第一行设置为“1”,以作为沿水平行的数值之一。影响+可能性语句确定字段是否应显示“低”,“中”或“高”的值,但是现在“低”只是一个占位符,矩阵大小语句确定它是否应为空白或不是基于所需的尺寸。
答案 0 :(得分:2)
您正在寻找的替代方案是switch()
:
switch([Matrix Size] <= 0, " ",
[Impact] = 0, "1",
[Impact] + [Likelihood] = 2, "Low",
. . .
"Error"
) -- only one paren needed!
不幸的是,您的条件是基于三列的混合,因此查找表会有点麻烦。