【问题标题】:Alternative to IIf statement in MS AccessMS Access 中 IIf 语句的替代方法
【发布时间】:2018-10-28 02:29:29
【问题描述】:

我有一个 IIf 语句 应该 做我想做的事,但它太复杂了,所以我需要另一种方法来编写这段代码。我试过一个 switch 语句,但有同样的问题。代码的目的很难解释,但我会尽量保持简单,因为我发现在搜索解决方案时上下文很重要。

基本上,我使用查询来输出可用作模拟矩阵的数据表。它需要能够自定义,即 5x5、7x7、10x10 等,并且显示的值需要更改以反映尺寸。查询从中提取的表之一只是我使用总和来确定该字段的输出的数字值。还有一个标有“[矩阵大小]”的字段确定尺寸。最终,这也将决定基于这些维度显示哪些信息,但我还没有走到那一步。过于复杂的 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")))))))))))))))

如果有人知道简化此操作的方法/另一种不会太复杂而无法访问的方法,请告诉我。任何帮助表示赞赏。

为了清晰,如果需要:

第二个 IIf 用于将第一行设置为“1”,作为沿水平行的数值之一。影响+可能性语句确定该字段是否应显示“低”、“中”或“高”的值,但目前“低”只是一个占位符,矩阵大小语句确定它是否应该为空白或不是基于所需的尺寸。

【问题讨论】:

  • 听起来你需要一个查找表,因为这段代码是香蕉。查找表只是一个数组。
  • @tadman 可以按照我需要的方式更改数组吗?我以前没有对数组做过很多事情,所以我不确定它的功能是什么。
  • 数组只是事物的列表,而数组的好处在于它是一个概念,您的代码可以使用几行代码来处理,而不必一步一步地拼写出来.一个好的起点是documentation。您可以创建一个数组,将0 映射到"1"1"2"2"Low" 等等,这很容易,因为数组是零索引的。
  • 如果因为规则复杂无法查表,写一个VBA函数。

标签: sql ms-access iif


【解决方案1】:

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

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

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

【讨论】:

  • 我尝试使用 switch 代替,但是 switch 与 IIf 语句有相同的问题,太复杂了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
相关资源
最近更新 更多