2013-06-28 39 views
0

我試圖從週末日期中整理數據庫中的值。我在7個數據庫中的6個函數上使用的函數(它們的構造都是相同的)。第七個數據庫不起作用。我得到的表達過於複雜的錯誤。任何幫助找出原因?訪問:表達式太複雜,無法進行評估

這裏是我的代碼:

SELECT UPC_Test.Type, 
     UPC_Test.[Model No], 
     UPC_Test.[Model Desc], 
     UPC_Test.[Serial No], 
     Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[Test Date],0)),"m/d/yyyy") AS [Test Date], 
     UPC_Test.Parameter, 
     UPC_Test.[Failure Symptom], 
     UPC_Test.[Repair Action], 
     UPC_Test.[Factory Select], 
     UPC_Test.[Test Station] 
FROM UPC_Test 
GROUP BY UPC_Test.Type, 
     UPC_Test.[Model No], 
     UPC_Test.[Model Desc], 
     UPC_Test.[Serial No], 
     Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[Test Date],0)),"m/d/yyyy"), 
     UPC_Test.Parameter, 
     UPC_Test.[Failure Symptom], 
     UPC_Test.[Repair Action], 
     UPC_Test.[Factory Select], 
     UPC_Test.[Test Station] 
HAVING (((UPC_Test.Type)="Production") 
AND ((Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[Test Date],0)),"m/d/yyyy"))=[Enter]) 
AND ((UPC_Test.[Failure Symptom])<>"") 
AND ((UPC_Test.[Repair Action])<>"") 
AND ((UPC_Test.[Test Station])="UPC RF Test")) 
ORDER BY Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[Test Date],0)),"m/d/yyyy"); 
+0

第7個數據庫中的數據有什麼不同?具體而言,由於您正在對某些字段進行格式設置和計算,有沒有可能導致計算失敗或未定義的地方? – thursdaysgeek

回答

1

當你有你的選擇線路聚合列BY子句的組用來 - 比如總和,計數。我看不到你有任何 - 這是用來限制返回的行

所以你可以通過 - 將查詢與聚合列進行比較 - 並將其轉換爲where子句來擺脫組。

它認爲是非常不好的做法,有空格的字段名,並將返回咬你很多次 - 這需要更改數據庫架構

我已在(未經測試的人,我沒有查詢變化訪問)

SELECT UPC_Test.Type, 
    UPC_Test.[Model No], 
    UPC_Test.[Model Desc], 
    UPC_Test.[Serial No], 
    Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[Test Date],0)),"m/d/yyyy") AS [Test Date], 
    UPC_Test.Parameter, 
    UPC_Test.[Failure Symptom], 
    UPC_Test.[Repair Action], 
    UPC_Test.[Factory Select], 
    UPC_Test.[Test Station] 
FROM UPC_Test 
    WHERE (((UPC_Test.Type)="Production") 
    AND ((Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[TestDate],0)),"m/d/yyyy"))=[Enter]) 
    AND ((UPC_Test.[Failure Symptom])<>"") 
    AND ((UPC_Test.[Repair Action])<>"") 
    AND ((UPC_Test.[Test Station])="UPC RF Test")) 
    ORDER BY Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[TestDate],0)),"m/d/yyyy"); 
+0

這個腳本完全適用於除此之外的所有其他數據庫。結構(標題相同)沒有區別,查詢複製粘貼了源代碼的更正。我不明白爲什麼這是出現錯誤的7個數據庫中唯一的一個。還有你建議我改變返回的語法錯誤。 – user2502964

0

嘗試減少查詢和字段返回,以便可以消除不會導致任何問題的部分。如果你能分辨出沒有導致錯誤的是什麼,那麼你更接近了解是什麼導致了錯誤。

我會仔細看看計算出的字段和限制,因爲可能一塊不良數據會導致它不被定義(例如將日期格式設置爲2013年2月30日)。

嘗試在第7個數據庫中使用數據的子集來追蹤是否存在某些不良數據。製作數據庫的副本,確保發生錯誤。刪除上半部分的記錄,看看它是否仍然存在。如果沒有,請獲得另一份副本,並僅使用後半部分數據進行嘗試。如果它失敗了一半而不是另一半,它很可能是數據,所以再次開始刪除一半來追蹤它。