1

这是我的第一个问题,请善待。我正在编写一个宏访问,我希望一系列报告一个接一个地运行。问题是所有报告都有一个需要输入的日期范围。有些是前一周的,有些是上个月的。

VBA 或宏创建器中是否有办法自动计算上个月或前一周的日期范围并填充该字段以完全自动化该过程,而无需每次手动输入日期范围。

我是 VBA 的新手。任何帮助都会很棒,只要指出我正确的方向。祝你有美好的一天。

4

2 回答 2

2

此查询是使用 MS Access 中的查询设计窗口创建的,然后从 SQL 视图中剪切。它将在 table1 中显示上周的记录,其中 ww 是周数

SELECT Table1.AKey, Table1.atext, Table1.ADate, 
       Format([ADate],"ww") AS Week, Month([ADate]) AS [Month], 
       Year([ADate]) AS [Year]
FROM Table1
WHERE (((Format([ADate],"ww"))=Format(Date(),"ww")-1)
AND ((Year([ADate]))=Year(Date())));

您会注意到有一列称为月。您可以使用它来设置上个月,方法与设置前一周类似。例如,上周和上个月:

SELECT Table1.AKey, Table1.atext, Table1.ADate, 
       Format([ADate],"ww") AS Week, Month([ADate]) AS [Month], 
       Year([ADate]) AS [Year]
FROM Table1
WHERE (((Format([ADate],"ww"))=Format(Date(),"ww")-1) 
AND ((Year([ADate]))=Year(Date()))) 
OR (((Month([ADate]))=Month(Date())-1) 
AND ((Year([ADate]))=Year(Date())));

SQL 可以写得更整洁,但您也可以从查询设计窗口开始。

于 2012-11-14T14:52:45.947 回答
0

我猜日期在您打开的数据库中有一个自己的字段,
然后您可以执行类似的操作

strSQL = "SELECT * FROM reports WHERE Date >= " & now() -7
rs.open(strSQL)
' for the last week

strSQL = "Select * FROM reports WHERE Date >= " & now() - 30
rs.open(strSQL)
' for the last month

但是您需要将 now() 格式化为与表中相同的格式,这只是最原始的代码。我不得不处理类似的事情,结果很好

于 2012-11-14T14:53:18.363 回答