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

问题描述

我正在 MS Access 中开发一份报告,用于提取员工列表。它会生成每日签到表,然后在每个部门发布。

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

报告按部门分组,每个部门打印在一个新页面上(组标题部分将“强制新建页面”设置为“前部分”)。

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

解决方法

我这样做的方式是:

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

问候,

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...