我想运行一个查询,该查询从今天开始减去一定天数,然后对该结果进行过滤。我在Access 2007中工作
这可行,但是我需要从名为SetupExp.qryFilter
的表中读取50
SELECT CustItemExp.LocationKey, CustItemExp.MarketBasket, CustItemExp.SaleDate
FROM CustItemExp
WHERE Now() -50;
我已经尝试过WHERE Now() -[SetupExp].[qryFilter]
没运气,它只是提示您输入值。
我想将50放在表/字段中,以便查询无需用户输入即可读取它。
答案 0 :(得分:0)
据我了解,您需要从现在开始的最近50天内显示SaleDate
记录,并能够将此天数存储在SetupExp表中。如果是这样,您可以使用如下查询:
SELECT CustItemExp.LocationKey, CustItemExp.MarketBasket, CustItemExp.SaleDate
FROM CustItemExp, SetupExp
WHERE CustItemExp.SaleDate > Now()-[qryFilter];
如果您需要可编辑的查询(如注释中所建议),请使用DLookup:
SELECT CustItemExp.LocationKey, CustItemExp.MarketBasket, CustItemExp.SaleDate
FROM CustItemExp
WHERE CustItemExp.SaleDate > Now()-DLookUp("qryfilter","SetupExp")
答案 1 :(得分:0)
所有Now() - 50
的拳头都不是从今天开始减去50天的正确方法。正确的方法是DateAdd('d', -50, Now())
,或者如果您不想使用时间成分,而只使用天数DateAdd('d', -50, Date())
,则更好。
您可以使用DLookup
从表中查找值。如果要查找单个固定值(您的表从字面上看具有该值的单个记录),则可以使用DLookUp('qryfilter', 'SetupExp')
。如果您的表有多个记录,并且取决于您要相对于每个CustItemExp
使用哪种记录,则可以将JOIN
CustItemExp
和qryfilter
作为SQL语句的一部分或使用DLookup
的可选第3个参数,它作为WHERE
类型的过滤器。