Como posso produzir um relatório no formato PDF, onde o nome consiste em valores dos campos?
Pergunta
Quero adicionar funcionalidade ao meu relatório Access 2007, pelo qual uma cópia em PDF do relatório é criada com o clique de um botão. Eu sei que existe um OutputTo
Macro que pode fazer isso por mim, mas não me permite incluir valores de campo de relatório como parte do nome do arquivo do PDF, a saber:
[Client Organisations].Code + "-" + Clients.Code + "-" + Invoices_Code + "-" + Format([Invoice Date],"yyyy") + ".pdf"
Enquanto eu vi isso MSDN Thread e isto Então pergunta, Não vejo o uso de valores de campo em nenhuma das respostas.
Eu acho que o código VBA é o caminho a percorrer, então (sem sucesso) tentei o seguinte:
Private Sub Create_PDF_Click()
DoCmd.OutputTo acOutputReport, , acFormatPDF, "" + [Client Organisations].Code
+ "-" + Clients.Code + "-" + Invoices_Code + "-" + Format([Invoice Date],"yyyy")
+ ".pdf", True
End Sub
Erro de tempo de execução '2465':
O acesso ao Microsoft Office não pode encontrar o campo '|' referido em sua expressão
Alguma ideia por aí?
Solução
Eu consegui funcionar (eventualmente).
A seguir sub
fez o truque:
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
Duas advertências:
- O relatório precisa ser aberto antes da impressão.
- Consulte os campos com o mesmo nome que o relatório o vê. Este
[Client Organisations].Code
foi[Client Organisations_Code]
no relatório.
Outras dicas
É mais fácil diminuir uma string e colocar toda a sua expressão lá e, em seguida, depurar -a para ver se ela contém o nome do relatório válido.
Assim:
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.