【发布时间】:2013-02-15 18:43:55
【问题描述】:
我正在研究一个仅在 Where 语句中引发数据类型不匹配的表达式。
Current: IIf(Nz([ISRS_VAL_ST_CAPP_LVL].[NBR_YRS_VALID],99)>0,
IIf(DateAdd("yyyy",CInt(Nz([ISRS_VAL_ST_CAPP_LVL].[NBR_YRS_VALID],99))
,CVDate(Format(Nz([TEST_DATE],19891231),"0000-00-00")))>Now(),True,False),True)
如您所见,我为每个引用添加了一个Nz() 函数,甚至尝试在整个语句上强制转换CBool(),但它仍然会引发数据类型不匹配。
我已将其归结为该表达式,该表达式的工作方式与Select 语句中的预期完全一致。当我将它添加到Where 语句中,只希望返回True 时,就会发生错误。
我可能会错过什么?
更新:对感兴趣的人进行完整查询
SELECT Student.TECH_ID, Student.CAPP_LVL, Values.ABBR, Values.SHORT_DESC, Values.LONG_DESC, Values.GROUP_NBR, Values.NBR_YRS_VALID, Student.SEQ_NBR, Student.CAPP_LVL_SCORE, Student.TEST_DATE, IIf(Nz([Values].[NBR_YRS_VALID],99)>0,IIf(DateAdd("yyyy",CInt([Values].[NBR_YRS_VALID]),CVDate(Format([TEST_DATE],"0000-00-00")))>Now(),True,False),True) AS [Current], Values.END_DATE, Student.LOAD_DATE
FROM Student INNER JOIN Values ON Student.CAPP_LVL = Values.CAPP_LVL
WHERE (((Values.ABBR)<>"MTHB") AND ((Values.END_DATE) Like "9999*"))
ORDER BY Student.TECH_ID, Student.CAPP_LVL, Student.SEQ_NBR;
【问题讨论】:
-
能否分享完整的查询?