MS Access有条款

时间:2017-06-05 16:22:16

标签: sql access-vba ms-access-2013 having-clause

好的,所以我理解HAVING子句的要点。我有一个问题,我想知道我是否可以按照我想要的方式解决这个问题。

我想使用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作为过滤器,而不必继续重新查询数据库。如果我将其删除,我会得到:

  

标准表达式中的数据类型不匹配。

我想做的是什么?如果有人能指出我正确的方向,这将是伟大的。

1 个答案:

答案 0 :(得分:1)

好的...导致类型不匹配是因为tblmt.mtdate不是日期字段或者tblmt.hours不是数字字段而且您的数据不是日期或不是数字当顾客不喜欢'TEST *'时。或者,对于某些客户,mt.date中的NULL为null,而null不能与&gt; =进行比较。如果你说tblMt.cust不喜欢“TEST *”,你仍会得到错误。

数据或您的期望可能会出现问题,您需要处理它。

tblMT.hours和tblMt.MtDate有哪些数据类型?