¿Cómo puedo reportar una salida en formato PDF, en el que el nombre se compone de los valores de los campos?
Pregunta
Quiero agregar funcionalidad a mi informe de Access 2007 mediante el cual se crea una copia en PDF del informe con el clic de un botón. Sé que hay una macro OutputTo
que puede hacer esto por mí, pero no permítaseme incluir valores de los campos informe como parte del nombre de archivo del PDF, a saber:
[Client Organisations].Code + "-" + Clients.Code + "-" + Invoices_Code + "-" + Format([Invoice Date],"yyyy") + ".pdf"
Mientras que he visto este hilo de MSDN y esto SO pregunta , me no ven el uso de valores de campo en cualquiera de las respuestas.
código VBA Creo que es el camino a seguir, así que (sin éxito) intentado lo siguiente:
Private Sub Create_PDF_Click()
DoCmd.OutputTo acOutputReport, , acFormatPDF, "" + [Client Organisations].Code
+ "-" + Clients.Code + "-" + Invoices_Code + "-" + Format([Invoice Date],"yyyy")
+ ".pdf", True
End Sub
Error de tiempo de ejecución '2465':
Microsoft Office Access no puede encontrar el campo '|' se hace referencia en su expresión
¿Alguna idea por ahí?
Solución
Yo tengo que trabajar (con el tiempo).
La siguiente sub
hizo el truco:
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
Dos advertencias:
- preciso que el informe que se abrirá antes de imprimir.
- Consulte los campos con el mismo nombre que el informe lo ve como. Eso era
[Client Organisations].Code
[Client Organisations_Code]
en el informe.
Otros consejos
Es más fácil en Dim una cadena y poner toda su expresión allí y luego depurarlo para ver si contiene el nombre del informe válido.
De esta manera:
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.