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 значения, в этом случае функция преобразования типа вернет ошибку.

Другие вопросы по тегам