MS Access

时间:2018-05-17 18:06:29

标签: sql ms-access iif

我有一个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”,以作为沿水平行的数值之一。影响+可能性语句确定字段是否应显示“低”,“中”或“高”的值,但是现在“低”只是一个占位符,矩阵大小语句确定它是否应为空白或不是基于所需的尺寸。

1 个答案:

答案 0 :(得分:2)

您正在寻找的替代方案是switch()

switch([Matrix Size] <= 0, " ",
       [Impact] = 0, "1",
       [Impact] + [Likelihood] = 2, "Low",
       . . .
       "Error"
      )  -- only one paren needed!

不幸的是,您的条件是基于三列的混合,因此查找表会有点麻烦。