Как вывести отчет в формате PDF, имя которого состоит из значений полей?
Вопрос
Я хочу добавить в свой отчет 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
Два предостережения:
- Перед печатью отчет необходимо открыть.
- Обращайтесь к полям с тем же именем, под которым они отображаются в отчете.Что
[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.