Как вывести отчет в формате PDF, где имя состоит из значений из полей? - PullRequest
5 голосов
/ 19 февраля 2010

Я хочу добавить функциональность в свой отчет 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 не может найти поле '|' упоминается в вашем выражении

Есть идеи?

Ответы [ 2 ]

15 голосов
/ 20 февраля 2010

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

Следующие 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] в отчете.
1 голос
/ 19 февраля 2010

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

Как это:

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.
...