IIf Оператор, управляющий только частью данных в поле
Я создал оператор IIf в запросе MS Access, чтобы заполнить пустые места в определенном поле. Заявление затрагивает только некоторые данные, но не все. Почему это будет работать только на определенный процент записей?
Field:Line_off_Date
Table:Claims
Criteria:IIf(IsNull("Line_off_Date "),"1/1/1900"
Вот официальное Sql после разграничения:
SELECT Claims.Line_off_Date
FROM Claims
WHERE (((Claims.Line_off_Date)=IIf("Line_off_Date IsNull",#1/1/1900#,"Line_off_Date ")));
Я не могу сделать снимок экрана на этом сайте, но я мог бы представить макет:
Line_off_Date
23.12.2013 23.12.2013 16.05.2010 01.01.1900 01.01.1900
10.12.2000 г. 04.11.2008 г.
Это указано в виде столбца с пробелом между 01.01.1900 и 12.10.2000. Когда я размещаю это здесь, это превращается в абзац. Я надеюсь, что это помогает в некотором роде...
1 ответ
Я не уверен в вашей цели, но похоже, что вы могли бы использовать функцию Nz.
Criteria: Nz(Line_off_Date, "1/1/1900")
Если ты хочешь IIf
вместо этого попробуйте это так...
Criteria: IIf(Line_off_Date Is Null, "1/1/1900", Line_off_Date)
Обратите внимание, что эти предложения предполагают Line_off_Date
это текстовый тип данных. Если это на самом деле дата / время, разделите значение с помощью #
вместо кавычек.
Criteria: Nz(Line_off_Date, #1/1/1900#)
Criteria: IIf(Line_off_Date Is Null, #1/1/1900#, Line_off_Date)
Я больше запутался, увидев ваш WHERE
пункт...
WHERE (((Claims.Line_off_Date)=IIf("Line_off_Date IsNull",#1/1/1900#,"Line_off_Date ")));
Помимо вопросов цитирования и так далее, я думаю, что логика ошибочна. Если вы говорите "покажи мне строки, где Line_off_Date
= что-то кроме того, что хранится в Line_off_Date
msgstr " вы можете не получить никаких строк назад.
Я думаю, что вам нужен другой подход. Если вам нужна дополнительная помощь, покажите нам краткий набор примеров данных и желаемый результат на основе этих данных.
Исходя из обсуждения комментариев, я понимаю, что вы не хотите фильтровать набор результатов на основе Line_off_Date
--- это означает, что это не WHERE
вопрос пункта. Вместо этого вы хотите получить Line_off_Date
ценности, но заменить #1900-1-1#
для любого, которые являются Нуль. Если это правильно, выполните преобразование с выражением поля в SELECT
пункт.
SELECT Nz(Claims.Line_off_Date, #1900-1-1-#) AS Line_off_Date_adjusted
FROM Claims;