¿Cómo puedo reportar una salida en formato PDF, en el que el nombre se compone de los valores de los campos?

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

  •  21-09-2019
  •  | 
  •  

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í?

¿Fue útil?

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:

  1. preciso que el informe que se abrirá antes de imprimir.
  2. 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.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top