Можете ли вы иметь IIF, вложенный в IIF в Control Source? - PullRequest
0 голосов
/ 05 декабря 2011

Допустимо ли это в MS Access VBA:

iif ([company] = "starbucks", "retail", iif ([item] <> "", "DLookup(....)", ""))

Я пытаюсь получить что-то похожее на вышеуказанную работу.

1 Ответ

2 голосов
/ 05 декабря 2011

Да.

Вы можете вложить до 14 IIf операторов, прежде чем Jet / ACE пожалуется, что «Выражение слишком сложное». Нет аналогичного ограничения на функцию VBA IIf.

Поскольку вы используете это в источнике управления формы, Access будет оценивать это с помощью своей службы выражений (которая по существу обрабатывает ее, как если бы она была частью запроса Jet / ACE), поэтому будет применяться 14 уровней ограничения вложенности .

Обратите внимание, что я упоминал Jet / ACE IIf как оператор и VBA IIf как функцию . Хотя эти термины иногда используются свободно, они имеют точное значение. IIf оператор Jet / ACE является истинным троичным оператором . В результате он, как правило, более эффективен, чем одноименная функция VBA, и не страдает от возможных побочных эффектов .

...