在这段MS Access Code中,我试图获取客户注册的MAX日期。首先,我必须转换日期,以便它可以使用聚合函数。不幸的是,日期列中有些区域为空。如何解决或补救错误:无效使用空值?
我收到错误由于某些记录缺失日期而无效使用空。
我该如何补救,有没有解决办法?
下面是代码:
SELECT CUSTOMER.FIRST_NAME,
MAX(DateSerial(CInt(Left([CUSTOMER.SIGNUP_DATE],4)),CInt(Mid([CUSTOMER.SIGNUP_DATE],5,2)),CInt(Right([CUSTOMER.SIGNUP_DATE],2)))) AS SIGN_DATE,
(DateSerial(CInt(Left([CUSTOMER.LEAVE_DATE],4)),CInt(Mid([CUSTOMER.LEAVE_DATE],5,2)),CInt(Right([CUSTOMER.LEAVE_DATE],2)))) AS LEV_DATE
FROM CUSTOMER
WHERE ((DateSerial(CInt(Left([CUSTOMER.SIGNUP_DATE],4)),CInt(Mid([CUSTOMER.SIGNUP_DATE],5,2)),CInt(Right([CUSTOMER.SIGNUP_DATE],2)))) <=Date())
AND ((DateSerial(CInt(Left([CUSTOMER.LEAVE_DATE],4)),CInt(Mid([CUSTOMER.LEAVE_DATE],5,2)),CInt(Right([CUSTOMER.LEAVE_DATE],2)))) =#012/31/2012#)
GROUP BY
CUSTOMER.FIRST_NAME,
CUSTOMER.SIGNUP_DATE,
CUSTOMER.LEAVE_DATE;
建议:创建一个视图,说名为'CurrentCustomers'那用空'LEAVE_DATE'过滤掉客户,然后定位VIEW。但是你真的应该用实际的时间值永久替换那些与文本一样的日期列,而不是试图在飞行中这样做。 – onedaywhen
谢谢!我正在考虑首先滤除空值而不是添加Aggregate,表格连接到Access,因此我必须将它们的文本值转换为日期。 – Asynchronous
当你把这些名字放在括号里时,它能正常工作吗?不应该例如'[CUSTOMER.SIGNUP_DATE]'是[CUSTOMER]。[SIGNUP_DATE]'而不是?我不是一个MS Access人员,所以请原谅,如果这似乎是一个愚蠢的问题。 –