Как указал Zaider89, вы оставили I
с первых IIf()
.
Также вы сравниваете [Status2]
с 4 различными значениями: Q; WS; MG; Я БЫ. Вы заключили первое из этих значений с кавычками, но не с другими. Это заставляет меня подозревать, что db-движок будет обрабатывать неуказанные значения в качестве параметров и попросит вас указать значения для WS, MG и ID.
Последний из ваших IIf()
выражений включает «истинную часть», но не «ложную часть»:
IIf([Status2]=ID,"3.5 Hours")
Вы могли бы исправить эти проблемы, но я предлагаю вам рассмотреть возможность использования Switch Function вместо этого. Попробуйте следующее в одной строке в сетке проектирования запроса в столбце рядом с вашей попыткой IIf()
.
Duration:Switch([Status2]="Q","2.5 Hours",
[Status2]="WS","4 Hours",
[Status2]="MG","3 Hours 15 Mins",
[Status2]="ID","3.5 Hours")
Этот подход Switch()
выглядит мне лучше. Однако я думаю, что было бы лучше создать отдельную таблицу поиска с одним столбцом для [Status2]
и еще один для отображаемого значения. Затем присоедините эту таблицу к вашему запросу. После создания таблицы его легко использовать в ваших запросах, и я думаю, что это проще понять, чем подходы, использующие Switch()
или вложенные выражения IIf()
. Также было бы проще расширить, когда вам нужно добавить новые условия - просто добавьте их в виде строк в справочной таблице.
Что значит, что он не работает? Вы имеете в виду, что вам запрещено писать выражение OR или вы можете написать выражение, но оно не дает вам правильных результатов? –