我正在尝试输出报告。他们都遵循相同的信息,只针对不同的经理。我似乎无法获得任何正确的语法来修改必要的部分(Recordsource,Caption和包含set字符串的1个字段)。我不知道它是什么问我我可以得到代码来找到下一个管理器名称(记录源)并循环它们。我可以把代码输出到PDF文件没问题。这是我需要弄清楚的相关代码。这可能是完全错误的。我还没有真正处理过报道。
DoCmd.OpenReport "rptUsageReportTemplate", acViewReport
Reports("rptUsageReportTemplate").RecordSource = MngrUsgRptStr
Reports("rptUsageReportTemplate").Caption = MngrName & "'s " & Mnth & " Usage Report"
Reports("rptUsageReportTemplate").Controls("fldManagerHeader") = MngrName & "'s " & Mnth & " Usage Report"
Reports("rptUsageReportTemplate").Requery
DoCmd.Close acReport, "rptUsageReportTemplate", acSaveYes
“docmd.openreport”在那里,因为我无法停止收到错误2451 - 您输入的报告名称[...]拼写错误或引用未打开或不存在的报告msgstr“我知道它存在,而且我知道它拼写正确。所以它必须是一个开放的东西。如果我可以在幕后访问输出报告而不需要打开和关闭报告,那就太棒了。
简而言之,我想要的是我保存的报告是一个模板,只是多次更新值并将其保存到文件中。
答案 0 :(得分:0)
假设你有一个“经理”表或类似的(tblManagersOrSuch),下面未经测试的子应该让你去...
Sub DoManagersReport(Mnth As Integer)
Dim rsManagers As DAO.Recordset
Set rsManagers = CurrentDb.OpenRecordset("tblManagersOrSuch")
If Not rsManagers.EOF Then
rsManagers.MoveFirst
Do Until rsManagers.EOF
DoCmd.OpenReport "rptUsageReportTemplate", acViewPreview, , , acHidden
Reports("rptUsageReportTemplate").Caption = rsManagers!ManagerID & "'s " & Mnth & " Usage Report"
Reports("rptUsageReportTemplate").Controls("fldManagerHeader") = rsManagers!ManagerID & "'s " & Mnth & " Usage Report"
Reports("rptUsageReportTemplate").RecordSource = "Select * from MngrUsgRptStr Where ManagerID = " & rsManagers!ManagerID
DoEvents
Reports("rptUsageReportTemplate").Visible = True
DoCmd.OutputTo acOutputReport, "rptUsageReportTemplate", acFormatPDF, "C:\" & rsManagers!ManagerID & " " & Mnth & " Usage Report.pdf"
DoEvents
DoCmd.Close acReport, "rptUsageReportTemplate"
Loop
End If
'add error handling
End Sub
请注意,设置RecordSource会强制重新查询,因此您不需要这样做。 我还建议添加一个fileSaveAs函数来确定保存文件夹...