SELECT查询导致“表达式太复杂而无法评估或存在错误”

时间:2014-01-06 09:34:29

标签: sql ms-access ms-access-2003

最初有1000条记录需要评估。现在有40000条记录。请帮忙! 我只是想根据交易日期和开始日期获取交易的周数。

SELECT [1_Webtime_By_Date].Badge,Int(((([1_Webtime_By_Date].Date-Forms![Date Form].StartDate)+1.99)/7)+1) AS Week
FROM 1_Webtime_By_Date
GROUP BY [1_Webtime_By_Date].Badge,Int(((([1_Webtime_By_Date].Date-Forms![Date Form].StartDate)+1.99)/7)+1);

2 个答案:

答案 0 :(得分:1)

这是Access使用的编译器的已知问题。在访问97之后,64K段的限制被解除,但是您查询的数据量对于Access来说太多了。下一页提供的一些提示可能有所帮助,但在我看来,您需要使用适当的数据库系统,如MS SQL。如果成本问题,可以使用免费版本(SQL Express)。

ACC: "Out of Memory" or "Query Too Complex" with Query/Report

SQL Server Express Download page

您可能会发现,如果您最终用户使用Access,那么将SQL Server用作数据库并将Access作为前端可以帮助您解决问题。

给出的最佳提示是使用别名来缩短查询的长度并尝试删除嵌套查询:

Access SQL: FROM clause

答案 1 :(得分:0)

我的第一个倾向是在减号之前和之后增加一些空白区域。 我的下一个测试是将表单字段变为DATE类型,并使用类似

的内容
     DATEPART(ww,[1_Webtime_By_Date].Date - Forms![Date Form].StartDate ) AS WK