|
|
|
| если Isnull для текстового поля, то для ДАТ какой оператор используется? | |
|
| |
|
|
|
|
|
| >[Начало_действия_статуса] Вот такое условие в запросе работает.
IIf(IsNull([Прекращение_действия_статуса]);>[Начало_действия_статуса];Between [Начало_действия_статуса] And [Прекращение_действия_статуса])
Вот такое уже нет. ПОЧЕМУ? синтаксис правильный ведь. | |
|
| |
|
|
|
|
| Вот синтаксис как раз и неправильный. | |
|
| |
|
|
|
| Для каждой задачи свой синтаксис
Хотите правильный синтаксис - точно формулируйте задачу.
А то читая такие вопросы мозги закипать начинают не только у вас
Правильно поставленный вопрос - на 50% уменьшает время его решения
| |
|
| |
|
21 Кб. |
|
| Синтаксис неправильный? Так аксес не ругается.
Вот задача.
Таблицу статусов. Сроки действия статусов установлены двумя полями: Начало_действия_статуса и Прекращение_действия_статуса.
Делаю запрос:
Статус, Прекращение_действия_статуса, Начало_действия_статуса, Дата.
В поле дата я вставляю условие, о котором спрашивала выше.
ЦЕЛЬ:
получить статусы, действующие на дату, указанную в поле ДАТА, при этом ДАТА должна быть БОЛЬШЕ Начало_действия_статуса и МЕНЬШЕ Прекращение_действия_статуса и В СЛУЧАЕ, ЕСЛИ Прекращение_действия_статуса НЕ СОДЕРЖИТ ДАТУ, то ДАТА должна быть просто больше Начало_действия_статуса.
Сразу оговорюсь, если сделать условие просто ДАТА больше Начало_действия_статуса, то я среди полученных статусов получу также и недействующие, а этого не нужно.
Вот файлик. | |
|
| |
|
|
|
| Если я правильно понял нужно получить все реально действующие статусы, БЕЗ недействующих
Вопрос 1
Что такое действующий статус
Вопрос 2
Что такое недействующий статус
Ты уж извини но мне непонятно | |
|
| |
|
|
|
| Кусок справки ACCESS97 должен помочь Аленке.
Функция Nz возвращает нуль, пустую строку ("") или другое указанное значение, если переменная типа Variant имеет значение Null. Например, эту функцию используют для преобразования значений Null в другое значение при работе с выражениями, не допускающими пустых значений.
Синтаксис
Nz(variant[, представление])
Функция Nz использует следующие аргументы.
Аргумент Описание
variant Переменная с типом данных Variant.
представление Необязательный аргумент (если не используется в запросе). Значение типа Variant, которое возвращается, если аргумент variant имеет значение Null. Данный аргумент позволяет возвращать значение, отличное от нуля или пустой строки. Если функция Nz используется в выражении в запросе без аргумента «Представление», то результатом будет пустая строка в полях, содержащих значения null
Если аргумент variant имеет значение Null, функция Nz возвращает нуль или пустую строку, в зависимости от контекста, требующего числовое или строковое значение. Если указан необязательный аргумент представление, то функция Nz возвращает это значение при пустом значении аргумента variant.
Если аргумент variant имеет значение, отличное от значения Null, то функция Nz возвращает значение аргумента variant.
Дополнительные сведения
Функцию Nz используют при работе с выражениями, в которых могут оказаться пустые значения. Для того чтобы это выражение возвращало непустое значение при любых значениях входящих в него компонентов, следует с помощью функции Nz определить замену пустых значений на нули, пустые строки или любое специальное значение, представляющее пустые значения.
Например, выражение 2 + varX возвращает значение Null, если переменная varX типа Variant имеет значение Null. Однако выражение 2 + Nz(varX) в этом случае возвращает значение 2.
Функцию Nz часто используют как альтернативу функции IIf. Например, в следующей конструкции для получения нужных результатов требуются две инструкции с функцией IIf. Первое выражение, содержащее функцию IIf, используется для проверки на пустые значения и преобразования пустых значений в нулевые.
varTemp = IIf(IsNull(доставка), 0, доставка)
varResult = IIf(varTemp > 50, "Больше", "Меньше")
В следующей конструкции функция Nz позволяет выполнить те же действия в одной программной строке.
varResult = IIf(Nz(доставка) > 50, "Больше", "Меньше")
Если указать необязательный аргумент представление, его значение будет возвращаться вместо пустого значения аргумента variant. Использование этого необязательного аргумента позволяет исключить одно выражение, содержащее функцию IIf. Например, следующее выражение использует функцию IIf для возвращения строки, если переменная доставка имеет значение Null.
varResult = IIf(IsNull(доставка), "Бесплатно", доставка)
В следующем примере необязательный аргумент функции Nz указывает строку, которая возвращается, если переменная доставка имеет значение Null.
varResult = Nz(доставка, "Бесплатно") | |
|
| |
|
|
|
| Lukas, ну не издевайся
У меня такая же справка. Читала я 100 раз. Может после работы голова уже не варит, не знаю. Но хочется сегодня сделать. Ну помогите.
Что касается статусов:
Действующий статус - это статус, чей период действия содержит проверяемую дату. При этом период действия может состоять из Даты1 и Даты2, но также только из ДАты1, а Дата2 остается пустой, так как срок окончания действия статуса может быть неопределен. То есть все статусы, у которых Дата2 пустая, являются действующими, если их Начальная дата МЕНЬШЕ Проверяемой даты. А также действущие статусы - те, у которых проверяемая дата находится между ДАта1 и Дата2.
Дата1 - Начало действия.
Дата2 - конец действия.
Недействующий статус - это то, чем период действия НЕ содержит проверяемую дату, то есть Проверяемая дата МЕНЬШЕ Начальной или БОЛЬШЕ конечной. | |
|
| |
|
|
|
| Да и кстати, насчет справки. Там речь идет о текстовых значениях. С ними у меня все получается. А с датами нет. И прикола не пойму. Запрос-то простой, блин.
Кавычки не поставишь, сразу кричит, что тип данных неправильный. | |
|
| |
|
|
|
| Кстати, а где SQL строка неработающего запроса? | |
|
| |
|
|
|
| SELECT Статусы.Статус, Статусы.Начало, Статусы.Конец, ДАТА.ДАТА
FROM Статусы, ДАТА
WHERE (((ДАТА.ДАТА)=IIf(IsNull([Конец]),(ДАТА.ДАТА)>[Начало],(ДАТА.ДАТА) Between [Начало] And [Конец]))) Or (((ДАТА.ДАТА) Between [Начало] And [Конец])); | |
|
| |
|
|
|
| Пожалте, как и просили | |
|
| |
|
25 Кб. |
|
| Как вариант см. Query1. | |
|
| |
|
|
|
| Спасибо, вариант хороший, работающий. Главное, работающий.
Вопрос в том, что мне просто интересно, неужели то, что я пыталась сделать, невыполнимо?
Получается совсем провалы в памяти и неделю назад я не так делала? А почему я сейчас так стала делать?
Отдыхать надо, блин.
Но мне все равно интересно. Я еще на свежую голову подумаю. | |
|
| |
|
|
|
| Понятно что это не единственный варант | |
|
| |