MS Access, используйте Expression Builder для сравнения полей в одной таблице с DLookup в другой таблице
Я пытаюсь сделать отчет MS Access, где я использую текстовое поле для отображения значения поля, а затем другое текстовое поле, указывающее, является ли первое значение выше или ниже, чем запись в отдельной таблице.
Отчет имеет источник записи "Таблица 1" и текстовое поле с именем "txt_Value1", которое отображает число в поле: "Значение1". У меня есть вторая таблица "Customer_Criteria", в которой есть поле "PassValue", с которым я хочу сравнить. Мое выражение построителя выражений:
IIf([txt_Value1]<(DLookUp("[PassValue]","[Customer_Criteria]","[Customer] = 'ABC'")),"TRUE","FALSE")
Это утверждение всегда возвращает false независимо от того, что является правильным логическим результатом.
Я проверил это, написав:
IIf(1<(DLookUp("[PassValue]","[Customer_Criteria]","[Customer] = 'ABC'")),"TRUE","FALSE")
И я получаю правильные результаты. Также, если я напишу:
IIf([txt_Value1]< 1,"TRUE","FALSE")
Я получаю правильные результаты. Что мне не хватает, чтобы сравнить значение текстового поля с Dlookup?
1 ответ
Как я понимаю, оба поля являются числовыми. Access может рассматривать эти поля как текстовые, поэтому для правильного сравнения используйте преобразование типов. Попробуй это:
IIf(CLng(Nz([txt_Value1],0))< _
CLng(Nz(DLookUp("[PassValue]","[Customer_Criteria]","[Customer] = 'ABC'"),0)), _
"TRUE","FALSE")
Nz
требуется, если поля могут содержать NULL
значения, в этом случае функция преобразования типа вернет ошибку.