Ошибка вычислений результатов вложенных выражений IIf() в запросе

Я пытаюсь выполнить расчет на основе классификации записи в одну из трех групп. Итак, если а, то х; иначе если b, то y; иначе если c, то z. Вот что я пытаюсь:

Field:IIf([Rating]<6, 
DateAdd("m",3,[Rating/Comments Date]), 
IIf(5<[Rating]<8, 
    DateAdd("m",6,[Rating/Comments Date]), 
    DateAdd("y",1,[Rating/Comments Date])))

Любая идея, почему это возвращает «#error» вместо вычисленных результатов DateAdd?


person Tony    schedule 12.03.2013    source источник


Ответы (2)


Попробуйте изменить сегмент 5<[Rating]<8 на [Rating] BETWEEN 6 AND 7.

person Taliesin    schedule 12.03.2013
comment
Перейдите в режим просмотра таблицы и проверьте формат поля [Дата оценки/комментариев]. Если дата хранится в виде строки, функция DateAdd завершится ошибкой. - person Taliesin; 12.03.2013
comment
Я также видел эту ошибку для оценок нулевых значений. В ваших полях [Рейтинг] или [Рейтинг/Дата комментариев] есть нулевые значения? - person Taliesin; 12.03.2013
comment
Да, в обоих полях есть нулевые значения. Но функция по-прежнему работает с одной записью в середине набора данных. - person Tony; 13.03.2013

Год yyyy ( http://office.microsoft.com/en-ie/access-help/dateadd-function-HA001228810.aspx )

Как насчет упрощения:

Field:IIf([Rating]<6, 
DateAdd("m",3,[Rating/Comments Date]), 
IIf([Rating]>8, DateAdd("yyyy",1,[Rating/Comments Date]),
    DateAdd("m",6,[Rating/Comments Date])))
person Fionnuala    schedule 12.03.2013
comment
Он по-прежнему возвращает #error для всех записей из 500, кроме одной. Это сводит меня с ума! Тем не менее, спасибо, что помогли мне упростить. - person Tony; 12.03.2013
comment
У вас есть небольшой пример данных? - person Fionnuala; 12.03.2013
comment
@Tony Без демонстрационных данных единственный способ воссоздать проблему, с которой вы столкнулись, - это преобразовать поле [Рейтинг] в числа, хранящиеся в виде текста. Я рекомендую еще раз взглянуть на дизайн вашего стола. - person Taliesin; 13.03.2013