我正在尝试在Access中编写查询来轮询年初至今的销售记录以构建报告。我想我需要编写一个VBA模块来计算这些日期。
我需要上周六年初至今的日期范围(例如2015年1月1日至2015年10月24日本周的报告)。我还需要轮询去年至今的记录(例如2014年1月1日至2014年10月25日本周的报告)。
有关如何查询此日期范围的任何建议?
谢谢!
答案 0 :(得分:0)
考虑使用临时表格,例如两个字段YTDDates
(ID
,SalesDate
),其中包含可根据需要清除的日期范围。然后将您的销售数据加入此表以进行日常报告。
VBA可以从开始(2015年1月1日)到结束(2015年10月24日)的所有日期运行循环,并使用DateAdd()
函数迭代地附加到临时表。
Dim db As Database
Dim startDate As Date, endDate As Date, d As Date
Dim diff As Integer, i as Integer
Set db = CurrentDb()
startDate = #1/1/2015#
endDate = #10/24/2015#
diff = DateDiff("d", startDate, endDate)
' CLEAN OUT PRIOR DATE RECORDS
db.Execute "DELETE FROM YTDDates", dbFailOnError
For i = 0 To diff
d = DateAdd("d", i, startDate)
db.Execute "INSERT INTO YTDDates ([SalesDate]) VALUES (#" & d & "#);", dbFailOnError
Next i
Set db = Nothing
答案 1 :(得分:0)
我只使用日期字段中的BETWEEN子句,而不是临时表,而是在查询中使用公式,并使用如下公式:
vba.DateSerial(Year(Now()),Month(Now()),Day(Now())-Weekday(Now(),vbSunday))
Weekday函数从星期日(vbSunday)返回一个整数。因此,在星期一,它将返回' 2'星期六它将返回' 7'这将给你前一周的星期六约会。
为了获得年初的日期,你可以使用这样的函数:
vba.DateSerial(Year(Now()),1,1)