我正在使用一个巨大的Access(.mdb)数据库,因为我的运气不好我无法更改任何表格设计,只能创建查询,而且... ...
有这个表(部分):
Table1
Id Autonumber
Name Text(50) Not Null
Prod Text(8) Null
其中Prod字段是格式为“ddMMyyyy”的日期,而不是必需的。
使用这样的值:
Id Name Prod
------------------------
1 KX_W 06061988
2 AXR (null)
3 ELR 03021957
然后我正在尝试此查询,根据日期获取记录:
PARAMETERS [@basedate] Date;
SELECT
Table1.Id,
Table1.Name
FROM
Table1
WHERE
((Table1.Prod) Is Not Null) AND
(GetDate(Table1.Prod) >= [@basedate])
ORDER BY
Table1.Id;
* GetDate()
是一个VBA模块函数,它从字符串参数返回Date值(dd / MM / yyyy)。
执行查询时,我收到此消息: “这个表达式输入不正确,或者太复杂而无法评估......”
该表的大小约为50K,但我很确定这不是原因,这个数据库周围还有其他查询,复杂度高10倍,运行速度非常快!
我已尝试使用此表在Prod字段中没有空值并且工作正常,但是当我尝试使用整个表时,弹出的消息;我错过了什么?
答案 0 :(得分:1)
作为最后的手段,您可以尝试使用嵌套的子查询。
SELECT SUB.ID, SUB.Name
FROM
(SELECT t.ID, t.Name, t.Prod WHERE t.Prod Is Not Null) AS SUB
WHERE GetDate(SUB.Prod) >= [@basedate]
ORDER BY SUB.ID