MS Access 有条款
MS Access 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 作为过滤器而不必继续重新查询数据库。如果我删除它,我会得到一个:
Data type mismatch in criteria expression.
我想做的事情可行吗?如果有人能在这里指出我正确的方向,那就太好了。
好的...导致类型不匹配的原因是 tblmt.mtdate 不是日期字段或 tblmt.hours 不是数字字段并且您的数据不是日期或者当客户不喜欢 'TEST*' 时不是数字。或者,对于某些客户,您在 mt.date 中有一个 NULL,而 null 不能与 >= 进行比较。如果你说 where tblMt.cust not like "TEST*" too,你仍然会得到错误。
数据或您的期望可能有问题,您需要处理它。
tblMT.hours 和 tblMt.MtDate 是什么数据类型?
好的,我明白了 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 作为过滤器而不必继续重新查询数据库。如果我删除它,我会得到一个:
Data type mismatch in criteria expression.
我想做的事情可行吗?如果有人能在这里指出我正确的方向,那就太好了。
好的...导致类型不匹配的原因是 tblmt.mtdate 不是日期字段或 tblmt.hours 不是数字字段并且您的数据不是日期或者当客户不喜欢 'TEST*' 时不是数字。或者,对于某些客户,您在 mt.date 中有一个 NULL,而 null 不能与 >= 进行比较。如果你说 where tblMt.cust not like "TEST*" too,你仍然会得到错误。
数据或您的期望可能有问题,您需要处理它。
tblMT.hours 和 tblMt.MtDate 是什么数据类型?