Оператор iif() в Access

У меня есть оператор if, который возвращает #type! ошибка в моей форме в Access:

IIF([Responsible]=Null,"UNASSIGNED",[Responsible])

Я пытаюсь добиться того, чтобы он возвращал имя человека, назначенного задаче (который работает без выражения), и когда никто не назначен, чтобы он возвращал текст «НЕ НАЗНАЧЕН». Я не понимаю, почему это не работает.


person DtheHut    schedule 22.01.2015    source источник
comment
логика у вас все равно плохая. вы НЕ можете проверить null на равенство. null не может быть равен НИЧЕГО, включая самого себя. вот почему есть is null. iif([responsible] is null, x, y)   -  person Marc B    schedule 22.01.2015
comment
Ничто не может быть =Null или !=Null. Null — неизвестное значение. Вместо этого используйте IsNull() (или is Null, как упоминал @MarcB).   -  person Ken White    schedule 22.01.2015


Ответы (2)


как они сказали, вы не можете сравнивать null в VBA, поэтому сделайте это так:

IIF(IsNull([Responsible]),"UNASSIGNED",[Responsible])
person Caio César S. Leonardi    schedule 22.01.2015

Поскольку контекст представляет собой форму доступа, Nz может выполнить то, что вам нужно, более лаконично.

Nz([Responsible],"UNASSIGNED")
person HansUp    schedule 22.01.2015