Как вывести отчет в формате PDF, имя которого состоит из значений полей?

StackOverflow https://stackoverflow.com/questions/2296884

  •  21-09-2019
  •  | 
  •  

Вопрос

Я хочу добавить в свой отчет Access 2007 функциональность, благодаря которой копия отчета в формате PDF создается одним нажатием кнопки.Я знаю, что есть OutputTo макрос, который может сделать это за меня, но не позволяет мне включать значения полей отчета как часть имени файла PDF, а именно:

[Client Organisations].Code + "-" + Clients.Code + "-" + Invoices_Code + "-" + Format([Invoice Date],"yyyy") + ".pdf"

Пока я видел это Тема MSDN и это ТАК вопрос, я не вижу использования значений полей ни в одном из ответов.

Я считаю, что код VBA — это лучший вариант, поэтому я (безуспешно) попробовал следующее:

Private Sub Create_PDF_Click()
DoCmd.OutputTo acOutputReport, , acFormatPDF, "" + [Client Organisations].Code  
+ "-" + Clients.Code + "-" + Invoices_Code + "-" + Format([Invoice Date],"yyyy")
+ ".pdf", True
End Sub

Ошибка времени выполнения «2465»:

Microsoft Office Access не может найти поле '|' упоминается в вашем выражении

Есть какие-нибудь идеи?

Это было полезно?

Решение

Я заставил его работать (в конце концов).

Следующее sub сделал трюк:

Private Sub Create_PDF_Click()

Dim myPath As String
Dim strReportName As String

DoCmd.OpenReport "Invoices", acViewPreview

myPath = "C:\Documents and Settings\"
strReportName = Report_Invoices.[Client Organisations_Code] + "-" +
Report_Invoices.Clients_Code + "-" + Report_Invoices.Invoices_Code + "-" +
Format(Report_Invoices.[Invoice Date], "yyyy") + ".pdf"

DoCmd.OutputTo acOutputReport, "", acFormatPDF, myPath + strReportName, True
DoCmd.Close acReport, "Invoices"

End Sub

Два предостережения:

  1. Перед печатью отчет необходимо открыть.
  2. Обращайтесь к полям с тем же именем, под которым они отображаются в отчете.Что [Client Organisations].Code был [Client Organisations_Code] в отчете.

Другие советы

Проще затемнить строку и поместить туда все выражение, а затем отладить его, чтобы проверить, содержит ли оно допустимое имя отчета.

Так:

Dim strReportName as String

strReportName = [Client Organisations].Code   
+ "-" + Clients.Code + "-" + Invoices_Code + "-" + Format([Invoice Date],"yyyy") 
+ ".pdf"

//then try to print strReportName before you use DoCmd.OutputTo.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top