2017-06-05 116 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?