Ошибка несоответствия типа данных при использовании функции CDate

Я пытаюсь присоединиться к таблице к запросу в MS Access. Поле для запроса — «LineoffMonth», а поле для таблицы — «Месяц производства». LineoffMonth выглядит так:

LineoffMonth: CDate(Month([Line_off_Date]) & "/1/" & Year([Line_off_Date]))

Месяц производства — это тип данных даты/времени. Я продолжаю получать «Ошибка несоответствия типа данных в выражении». Я не понимаю, почему он не позволяет мне присоединиться к двум полям.


person autumntiger    schedule 18.12.2013    source источник


Ответы (1)


Вы получите эту ошибку, когда [Line_off_Date] имеет значение Null, как показано в этом сеансе немедленного окна.

Line_off_Date = Null
? Month(Line_off_Date) & "/1/" & Year(Line_off_Date)
/1/
? CDate("/1/") ' throws Type mismatch (Error 13)

Вы можете обновить таблицу, заменив нули в [Line_off_Date]. Или вы можете добавить предложение WHERE, чтобы исключить строки, которые имеют значение Null для [Line_off_Date]. Или вы можете использовать выражение IIf, которое возвращает выражение CDate, когда [Line_off_Date] не равно Null, а что-то другое (возможно, Null?), когда [Line_off_Date] равно Null.

В качестве дополнительной точки зрения рассмотрите выражение DateSerial вместо того, что вы использовали.

Line_off_Date = Date()
? CDate(Month(Line_off_Date) & "/1/" & Year(Line_off_Date))
12/1/2013
? DateSerial(Year(Line_off_Date), Month(Line_off_Date), 1)
12/1/2013 
person HansUp    schedule 18.12.2013