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
作为名称的一部分,而不是我正在使用的循环计数器。
此致,
我正在 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
作为名称的一部分,而不是我正在使用的循环计数器。
此致,