2014-01-06 46 views
0

最初有1000條記錄需要評估。現在有40000條。請幫助! 我只是試圖根據交易日期和開始日期獲取交易的週數。SELECT查詢會導致「表達式太複雜,無法評估或出現錯誤」

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); 
+0

它的工作罰款1000條記錄 –

+0

嘗試SELECT DISTINCT [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 – PeterRing

+0

Nope不起作用顯示相同的錯誤。我試着簡化表達式([1_Webtime_By_Date] .Date-Forms![Date Form] .StartDate),以防萬一它與訪問的數學存儲能力有關。仍然顯示相同的錯誤。 –

回答

1

這是Access使用的編譯器的一個已知問題。在Access 97之後,64K段的限制被解除了,但是您所查詢的數據量對於Access來說太簡單了。在下面的頁面上給出了一些可能會有所幫助的提示,但在我看來,您需要使用適當的數據庫系統,例如MS SQL。如果問題出現成本問題,則提供免費版本(SQL Express)。

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

SQL Server Express Download page

您可能會發現,使用SQL Server作爲數據庫,Access作爲前端可以幫助你的問題,如果你是綁使用爲最終用戶訪問。

給出的最好的技巧是使用別名來縮短您的查詢的長度,並嘗試刪除嵌套查詢:

Access SQL: FROM clause

0

我的第一個傾向是之前和之後添加一些白色的空間無論是減號。 我的下一個考驗將讓表單字段爲日期類型,使用類似

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