Добрый день!
Проблема следующая: мне необходимо в запросе, в условиях отбора, использовать функцию IIF, которая будет возвращать в случае Истина значения ”>= [число]” или же “<[число]” – в случае ЛОЖЬ. Но Access категорически не хочет воспринимать логический оператор сравнения >= / < в начале выражения, результат функции IIF он понимает просто как текстовую строку.
Подскажите, пожалуйста, варианты решить проблему.
1. В adp проектах нет такого оператора
2. Если запрос составлять мастером, то разграничитель должен быть ; (точка с запятой) , а не , (запятая)
3. Вот пример использования IIF: SELECT IIf([Поле1]>1,'test 2',3) AS result FROM Таблица1;
Добрый день,
Прощу прощения за некорректную формулировку, но я имел ввиду другое.
В запросе, в условии отбора нужно записать следующее:
IIF( Формы![Форма1]![Флажок1] =Истина;>= Формы![Форма1]![Числовое поле1] and < Формы![Форма1]![Числовое поле2] ; > Формы![Форма1]![Числовое поле3])
Но проблема в том, что Access не различает логический операнд в выражении. Есть ли специальный символ, который нужно поставить перед знаками (>= или <)? Или же другой вариант?
Access различает логические операторы в запросах, если конечно выражение построено правильно. В данном случае оно неправильно построено, поэтому и идет ошибка. Выход - можно написать внешнюю функции и ее подставить в запрос. Возможностей у такого способа больше, т.к. при ошибочном результате программа остановиться. Пример выражения Select funПроверки([Поле]) as НовоеПоле ... Можно использовать и CBOOL() для конвертирования произвольного выражения в булевый результат.