使用CDate函数的数据类型不匹配错误

时间:2013-12-18 18:31:58

标签: ms-access type-mismatch calculated-field

我正在尝试将表连接到MS Access中的查询。查询字段为“LineoffMonth”,表的字段为“Production Month”。 LineoffMonth看起来像这样:

LineoffMonth:CDate(月([Line_off_Date])&“/ 1 /”& Year([Line_off_Date]))

生产月份是日期/时间数据类型。我一直收到“表达式中的数据类型不匹配错误”。我不明白为什么它不会让我加入这两个领域。

1 个答案:

答案 0 :(得分:1)

[Line_off_Date]为空时,您将收到该错误,因为此立即窗口会话说明了。

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

您可以更新表格以替换[Line_off_Date]中的Null。或者,您可以添加WHERE子句以排除[Line_off_Date]为空的行。或者您可以使用IIf表达式,当CDate不为空时返回[Line_off_Date]表达式,但是当[Line_off_Date]为空时返回其他内容(可能为空?)。

作为一个侧面点,请考虑使用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