2017-06-05 141 views
0

好吧,我理解了HAVING子句的要點。我有一個問題,我想知道我是否可以按照我想要的方式解決問題。MS Access條款

我想使用ADODB.Recordset執行一個查詢,然後使用Filter函數篩選數據集。

問題是,此刻的查詢,看起來像這樣:

SELECT tblMT.Folder, tblMT.MTDATE, tblMT.Cust, Sum(tblMT.Hours) 
FROM tblMT 
GROUP BY tblMT.Folder, tblMT.MTDATE, tblMT.Cust 
HAVING tblMT.Cust LIKE "TEST*" AND Min(tblMT.MTDATE)>=Date()-30 AND MAX(tblMT.MTDATE)<=Date() 
ORDER BY tblMT.TheDATE DESC; 

所以上面的作品如預期....但是我希望能夠使用tblMT.Cust作爲過濾器,而不必須保持重新查詢數據庫。如果我刪除它,我會得到:

標準表達式中的數據類型不匹配。

是我想要做的可能嗎?如果有人能指出我在正確的方向,這將是偉大的。

+0

好的...類型不匹配是由於tblmt.mtdate不是日期字段或tblmt.hours不是數字字段而導致數據不是日期或不是數字當客戶不像'TEST *'或某些客戶時,你在mt.date中有一個NULL,而null不能與> =進行比較。如果你說'哪裏tblMt.cust不像'TEST *'',你仍然會得到錯誤。問題可能與數據或您的期望有關,您需要處理它。什麼數據類型是tblMT.hours和tblMt.MtDate? – xQbert

+0

感謝您的洞察力。我知道表格內有數據異常,所以我可以檢查空值並查看會發生什麼。這是一個繼承的項目,我一直在慢慢正常化數據。 – Maxs728

+0

@xQbert在他的評論結尾提出了一個非常重要的問題,你沒有回答。請做。 – Parfait

回答

1

好的...類型不匹配是由於tblmt.mtdate不是日期字段或tblmt.hours不是數字字段而導致數據不是日期或不是當客戶不喜歡'TEST *'時的號碼。或者,對於某些客戶,您在mt.date中有NULL,並且null不能與> =進行比較。如果你說tblMt.cust不像「TEST *」,你仍然會得到錯誤。

問題可能與數據或您的期望有關,您需要處理它。

什麼數據類型是tblMT.hours和tblMt.MtDate?