关于《运用Access实现降本增效》中,报表选择有一段代码,获取月底日期,当选择为12月时会出错,将代码修改为:
Dim StartDate As Date
Dim EndDate As Date
Dim LastDate As Date
Dim strSQL As String
If IsNull(Me.txt销售日期) Then
MsgBox "请输入报表日期", vbCritical, "提示"
Me.txt销售日期.SetFocus
Exit Sub
End If
EndDate = Me.txt销售日期
' StartDate = CDate(Year(EndDate) & "-" & Month(EndDate) & "-" & "1")'原代码,12月时会出错
'StartDate = CDate(Year(Me.txt销售日期) & "-" & Month(Me.txt销售日期) & "-" & "1") '修改后的,12月份不会出错
StartDate = CDate(Year(EndDate) & "-" & Month(EndDate) & "-" & "1") '修改后的,12月份不会出错
' LastDate = CDate(Year(EndDate) & "-" & Month(EndDate) + 1 & "-" & "1") - 1'原代码,12月时会出错
'LastDate = DateAdd("m", 1, Format(Me.txt销售日期, "yyyy/mm/\1")) - 1 '修改后的,12月份不会出错
LastDate = DateAdd("m", 1, Format(EndDate, "yyyy/mm/\1")) - 1 '修改后的,12月份不会出错
strSQL = "Update tbl参数表 SET 结束日期 = #" & EndDate & "#, 开始日期 = #" & StartDate & "#, 月底日期 = #" & LastDate & "#"
DoCmd.SetWarnings False
'将 销售的当天日期,月初开始日期,月底结束日期写入 tbl参数表,以供查询作为条件使用
DoCmd.RunSQL strSQL
'每次生成报表数据前,对 tbl临时表_销售日报 进行清空
DoCmd.OpenQuery "qry清空销售日报"
'生成 本月累计销量的清单(例如按客户)
DoCmd.OpenQuery "qry本月累计销量"
'将 清单追加到 tbl临时表_销售日报 中
DoCmd.OpenQuery "qry追加销量累计数"
'生成当天的销售量(按客户)
DoCmd.OpenQuery "qry本日销量"
'对 tbl临时表_销售日报 中的本日销量进行更新
DoCmd.OpenQuery "qry更新当日销量"
'生成本月的订单量(按客户)
DoCmd.OpenQuery "qry月订单量"
'对 tbl临时表_销售日报 中的订单量进行更新
DoCmd.OpenQuery "qry更新月订单量"
DoCmd.SetWarnings True
DoCmd.OpenReport "rpt销售日报", acViewReport
这样就避免了12月时的出错。