Como guardar un informe filtrado de access en PDF

Tengo hecha una base de datos de facturación, y en el formulario de "FACTURAS" un botón que al hacer

Click, me abre en vista preliminar, el informe "FACTURAS_A_CLIENTES" ya filtrado con el cliente que tengo

Activo en el formulario. Lo he conseguido mirando por internet con estas líneas de código:

DoCmd.OpenReport "FACTURAS_A_CLIENTES", acViewPreview, , "[NDocumento] = '" & Me.NDocumento & "'"
    DoCmd. Close acForm, "FACTURAS"

Lo que quiero hacer ahora es que ese informe ya filtrado, se me guarde en formate PDF en el pc. Con el

nombre de archivo " FACTURA NUMERO ([NDocumento]) del CLIENTE ([CodigoCTE]).PDF"

La Rruta para guardar seria mas o menos "C:\ Usuarios\ NombreUsuario\ MisDocumentos\ FRAS PDF"

2 respuestas

Respuesta

Pruebe con esto:

Dim strPath As String

Dim strArchivo As String

strArchivo="FACTURA NUMERO " & Me.NDocumento & "  del CLIENTE " & Me.CodigoCTE & ".PDF"

strPath = "C:\ Usuarios\ NombreUsuario\ MisDocumentos\ FRAS PDF\" & strArchivo

DoCmd.OpenReport "rptEjemplo", acViewPreview, , "Numero='" & "115 - 13" & "'", acHidden

DoCmd. OutputTo acOutputReport, "rptEjemplo", "PDFFormat(*.pdf)", strPath, False, "",, acExportQualityPrint

DoCmd. Close acReport, "rptEjemplo"

Asumo que tiene en el formulario los campos de texto NDocumento y CodigoCTE. Verifique que en su pc la ruta sea Usuarios o Users

Rectifico no hice los cambios:

Dim strPath As String

Dim strArchivo As String

strArchivo="FACTURA NUMERO " & Me.NDocumento & "  del CLIENTE " & Me.CodigoCTE & ".PDF"

strPath = "C:\ Usuarios\ NombreUsuario\ MisDocumentos\ FRAS PDF\" & strArchivo

DoCmd.OpenReport "FACTURAS_A_CLIENTES", acViewPreview, , "[NDocumento] = '" & Me.NDocumento, acHidden

DoCmd. OutputTo acOutputReport, "FACTURAS_A_CLIENTES", "PDFFormat(*.pdf)", strPath, False, "",, acExportQualityPrint

DoCmd. Close acReport, "FACTURAS_A_CLIENTES"

Asumo que tiene en el formulario los campos de texto NDocumento y CodigoCTE. Verifique que en su pc la ruta sea Usuarios o Users

Hola, gracias por tu respuesta

Lo he probado pero me da ERROR "2501" en tiempo de ejecución. La opción OutputTo se canceló

En la siguiente instrucción:

DoCmd.OutputTo acOutputReport, "FACTURAS_A_CLIENTES", "PDFFormat(*.pdf)", strPath, False, "", , acExportQualityPrint

Posiblemente tiene cerrado el reporte, es mejor que adjunte todo el procedimiento para detectar el error.

este es todo el procedimiento que tengo

Private Sub GuardarFacturas_Click()
   Dim strPath As String
   Dim strArchivo As String
      strArchivo = "FACTURA NUMERO " & Me.NDocumento & "  del CLIENTE " & Me.CodigoCTE & ".PDF"
      strPath = "C:\FACTURAS CHAMACO" & strArchivo
      DoCmd.OpenReport "FACTURAS_ACLIENTES", acViewPreview, , "[NDocumento] = '" & Me.NDocumento & "'", acHidden
      DoCmd.OutputTo acOutputReport, "FACTURAS_A_CLIENTES", "PDFFormat(*.pdf)", strPath, False, "", , acExportQualityPrint
      DoCmd.Close acReport, "FACTURAS_A_CLIENTES"
End Sub

Le hace falta la barra invertida en esta línea:

 strPath = "C:\FACTURAS CHAMACO" & strArchivo   debe ser:

 strPath = "C:\FACTURAS CHAMACO\" & strArchivo

Sigue dando mismo problema

Vamos a suprimir los espacios en el nombre del archivo:

Cambie esta línea:

  strArchivo = "FACTURA NUMERO " & Me.NDocumento & "  del CLIENTE " & Me.CodigoCTE & ".PDF" por:

   strArchivo = "FACTURA_NUMERO " & Me.NDocumento & "del_CLIENTE " & Me.CodigoCTE & ".PDF"

Después de esta línea

strPath = "C:\FACTURAS CHAMACO\" & strArchivo

Ingrese

Debug. Print strPath

Ejecute el procedimiento y mire el resultado en la ventana de inmediato y envía el resultado.

¿Está seguro que existe la carpeta FACTURAS CHAMACO?

La carpeta FACTURAS CHAMACO si esta creada y existe en la unidad c:/

he inhabilitado el acHidden para que no se me cierre el informe y se me muestre en pantalla,

si inhabilito la linea que me da el error el informe se me muestra filtrado en pantalla perfectamente

pero ya no lo guarda por el error.

debug. Print strPahth, no me saca nada en ventana de inmediato

Se me olvido decir que NDocumento y CodigoCTE son cadenas de texto

Se no me suministra la base de datos es imposible seguirle colaborando, estamos dando vueltas innecesarias.

Respuesta

Jesús: Has de usar el DoCmd.OutputTo...

Antes del DoCmd.Close..

https://docs.microsoft.com/es-es/office/vba/api/access.docmd.outputto 

Con una estructura tal como ésta:

Mi sugerencia es que declares variables y vayas componiendo RutaYFichero, que veo lo tienes:

NombreInforme sería >>"FACTURAS_A_CLIENTES"

Dim Ruta As String, Fichero As String

Ruta ="C:\ Usuarios\ NombreUsuario\ MisDocumentos\ FRAS PDF\"

Fichero = "FACTURA NUMERO" & '" Me.NDocumento & "'" & " del CLIENTE" & '" Me.CodigoCTE & "'" & ".PDF"

RutaYFichero = Ruta & Fichero

Creo no haberme liado con las comillas, porque además he supuesto que NDocumento y CodigoCTE son cafenas de Texto (no números).

ElNDocumento y CodigoCTE supongo los tienes en el Formulario

DoCmd. OutputTo acOutputReport, NombreInforme, acFormatPDF, RutaYFicheroPDF, False,,, acExportQualityPrint 'Si se quiere visualizar el PDF >> Poner True

Saludos >> JTJ

Jesús: Se me ha pasado declarar la variable RutaYFichero >>

Dim RutaYFichero As String

JTJ

Este es el procedimiento que tengo:

Private Sub GuardarFacturas_Click()
    Dim Ruta As String
   Dim Fichero As String
      Fichero = "FACTURA NUMERO" & "'Me.NDocumento &"" & "  del CLIENTE" & '"Me.CodigoCTE &"'" & ".PDF"
      Ruta = "C:\ FACTURAS CHAMACO\"
      DoCmd.OpenReport "FACTURAS", acViewPreview, , "[NDocumento] = '" & Me.NDocumento & "'"
      DoCmd.OutputTo acOutputReport, "FACTURAS", acFormatPDF, Ruta & Fichero, True, , , acExportQualityPrint
      DoCmd.Close acReport, "FACTURAS "
End Sub

NDocumento y CodigoCTE los tengo en el formulario y son cadenas de texto

En Fichero= "no doy con la colocación de las comillas para conseguir este resultado:"

FACTURA NUMERO 00001 del CLIENTE 00001.PDF

Y no se si funciona o no el procedimiento.

Gracias por tu atención

Jesús: Si todo lo demás funciona el Documento debería ser>>

& '"Me.NDocumento &"'"

O sea Comilla Simple, Comilla Doble... Comilla Doble, Comilla Simple, Comilla Doble

Si quieres ver el valor que te devuelve el Fichero, después de Fichero = ...

Pones una línea "Provisional" de mensaje que te indique el valor.

MsgBox "El valor generado del Fichero es....:" & '"Fichero & "'",vbInformation,"EL FICHERO"

Cuando compruebes que sale lo adecuado, esa línea la puedes comentar o borrar.

Saludos>> JTJ

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas