我这样做的方法是:
- 创建一个表(称为
tblReportDate
)以将日期存储在名为ReportDate
;的字段中。
- 创建一个小表单,其中包含一个名为的文本框,该文本框
txtReportDate
具有适合日期的输入掩码;
- 在报表中添加一个文本框,并将 controlsource 设置为
=DLookUp("ReportDate","tblReportDate")
;
- 在表单中添加一个命令按钮,并在其
OnClick
事件中包含以下代码:
Private Sub cmdPrint_Click()
On Error GoTo E_Handle
Dim intLoop1 As Integer
For intLoop1 = 0 To 6
CurrentDb.Execute "DELETE * FROM tblReportDate;"
CurrentDb.Execute "INSERT INTO tblReportDate (ReportDate) SELECT " & Format(DateAdd("d", intLoop1, Me!txtReportDate), "\#mm\/dd\/yyyy\#") & ";"
DoCmd.OpenReport "rptReport", acViewPreview
DoCmd.OutputTo acOutputReport, "rptReport", acFormatPDF, "C:\test\report-" & intLoop1 + 1 & ".pdf"
DoCmd.Close acReport, "rptReport"
Next intLoop1
sExit:
On Error Resume Next
Exit Sub
E_Handle:
MsgBox Err.Description & vbCrLf & vbCrLf & "frmReport!cmdPrint_Click", vbOKOnly + vbCritical, "Error: " & Err.Number
Resume sExit
End Sub
我更喜欢使用小表格而不是内置表格,InputBox
因为您可以使用输入掩码来输入日期。
在此示例中,我只是在关闭报表之前将报表输出为 PDF。您可能希望将其DLookup
用作名称的一部分,而不是我正在使用的循环计数器。
问候,