Используя сохраненный шаблон отчета и обновив источник записей, затем сохраните в файл - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь вывести отчеты.Все они следуют одной и той же информации, только для разных менеджеров.Я не могу получить какой-либо правильный синтаксис для изменения необходимых частей (Recordsource, Caption и 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 - Введенное вами имя отчета [...] написано с ошибкой или относится к отчету, который не являетсяоткрыть или не существует ". Я знаю, что он существует, и я знаю, что он написан правильно. Так что это должно быть открытым. Если я могу получить доступ к выводимым отчетам за кулисами, без необходимости видеть, открывать и закрывать отчет, это будетбудьте великолепны.

Короче говоря, я хочу, чтобы отчет, который я сохранил, был шаблоном и просто обновлял значения несколько раз и сохранял его в файл.

1 Ответ

0 голосов
/ 24 мая 2018

Предполагая, что у вас есть таблица "Managers" или аналогичная (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, чтобы определить папку для сохранения ...

...