Альтернатива заявлению IIf в MS Access - PullRequest
0 голосов
/ 17 мая 2018

У меня есть утверждение 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")))))))))))))))

Если кто-нибудь знает способ упростить этот / альтернативный способ, который не будет слишком сложным для доступа, пожалуйста, дайте мне знать,Любая помощь приветствуется.

Для Clarity, если необходимо:

Второй IIf используется для установки первой строки равной «1», чтобы действовать как одно из числовых значений вдоль горизонтальной строки.Операторы воздействия + правдоподобия определяют, должно ли поле отображать значение «Низкий», «Средний» или «Высокий», но на данный момент «Низкий» является просто заполнителем, а операторы размера матрицы определяют, должно ли оно быть пустым илине основано на желаемых размерах.

1 Ответ

0 голосов
/ 17 мая 2018

Альтернатива, которую вы ищете: switch():

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

К сожалению, ваши условия представляют собой смесь, основанную на трех столбцах, поэтому таблица поиска будет немногонемного громоздко.

...