У меня есть форма, которую я использую для сообщения данных из таблицы. Для элемента управления текстовым полем я должен использовать DLOOKUP для отображения нужного мне значения, в противном случае отображается порядковый номер. Вот код, который у меня есть для текстового поля, в котором отображается значение:
DLookUp("[FORMATION_NAME]","R_FORMATIONS","[FORM_ID]=" & [FIRST_FRM_FK])
Все идет нормально. Проблема, с которой я столкнулся сейчас, заключается в том, что если есть нулевое значение, DLOOKUP возвращает код #Error.
Я нашел решение, используя оператор IIF и ISNULL:
IIf(IsNull([WELL_MASTER]![FIRST_FRM_FK]),"",DLookUp("[FORMATION_NAME]","R_FORMATIONS","[FORM_ID]=" & [FIRST_FRM_FK]))
Когда я пробую это в запросе, он отлично работает; однако, когда я помещаю выражение в свой элемент управления текстовым полем, DLOOKUP возвращает ошибку #Name.
Любые предложения о том, как решить эту проблему? Google foo снова подводит меня.
Спасибо!
ОБНОВИТЬ:
Хорошо, я пробовал следующее:
За минти: Nz(DLookUp("[FORMATION_NAME]","R_FORMATIONS","[FORM_ID]=" & [FIRST_FRM_FK]),0)
Функциональная часть DLookup работает, но пустые значения возвращаются как #Error.
Пер Костас К: Nz(DLookUp("FORMATION_NAME","R_FORMATIONS","[FORM_ID]=" & [FIRST_FRM_FK]),0)
То же, что и предложение Минти.
Обернутый в оператор IIF с использованием функции Is Null вместо ISNULL:
IIf([WELL_MASTER]![FIRST_FRM_FK] Is Null,"",DLookUp("[FORMATION_NAME]","R_FORMATIONS","[FORM_ID]=" & [FIRST_FRM_FK]))
Я вернулся к своей исходной проблеме: функция DLookup возвращает ошибку #Name.
Вот что странно: выражения операторов IIF работают, если они находятся в запросе. Когда я копирую выражение в элемент управления текстовым полем, DLookup не работает. Функция DLookup отлично работает в выражении текстового поля, если вокруг него ничего не обернуто. Как только вы помещаете его в инструкцию IIF, он перестает работать.
Любые мысли о том, что такое элемент управления текстовым полем, который ему не нравится?
Спасибо Минти и Костасу К. за попытку помочь мне разобраться в этом. :)
=DLookUp("[FORMATION_NAME]","R_FORMATIONS","[FORM_ID]=" & Nz([FIRST_FRM_FK],0))
Это решает мою первую проблему, но у меня все еще та же проблема (на этот раз без нулей) с использованием DLOOKUP с функцией SWITCH в другом текстовом поле. Спасибо за то, что помогли мне с этим. 23.08.2017