MS Access:打印一份报告 7 次,每份将日期增加 1?

MS Access: Print a Report 7 times, Increase Date by 1 on each copy?

我正在 MS Access 中开发一份报告,用于提取员工列表。它每天生成 sign-in sheet,然后在每个部门发布。

我想打开报告,询问“开始日期”,然后打印接下来 7 天的报告,每份副本将“开始日期”参数增加 1。 (开始日期不存储在数据库中,它只是一个用于在报告上打印的输入参数)

报表按部门分组,每个部门在新页面上打印(组 Header 部分已将“强制新页面”设置为“前部分”)。

我假设这一切都需要在 VBA 中从打开报告的命令按钮的 Click() 事件的 while 循环中完成,但我不适合这里。知道如何实现吗?

我这样做的方式是:

  • 创建一个 table(称为 tblReportDate)以将日期存储在名为 ReportDate;
  • 的字段中
  • 创建一个小表单,其中包含一个名为 txtReportDate 的文本框,其中包含日期的输入掩码 suitable;
  • 在报表中添加一个文本框,并将控件源设置为=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 作为名称的一部分,而不是我正在使用的循环计数器。

此致,