这是我的第一个问题,请善待。我在访问中编写一个宏,我希望一系列报告一个接一个地运行。问题是所有报告都有一个需要输入的日期范围。有些是前一个星期有些是上个月。
VBA或宏创建者是否有办法自动计算上个月或周的日期范围,并填充该字段以完全自动化该过程,而无需每次手动输入日期范围。
我是VBA的新手。任何帮助都会很棒,只需指出正确的方向。祝你有个美好的一天。
答案 0 :(得分:2)
使用MS Access中的查询设计窗口创建此查询,然后从SQL视图中剪切。它将显示上周的记录,其中ww是周数,见表1
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())));
您会注意到一列名为Month。您可以使用它以与设置上一周类似的方式设置上个月。例如,上周和上个月:
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可以写得更整齐,但你也可以从查询设计窗口开始。
答案 1 :(得分: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()格式化为与表格中相同的格式 这只是最简单的代码。我不得不处理类似的事情,这很好用