Exportar Informe a PDF, con nombre de TextBox de formulario, exportarlo y Mostrarlo en PDF

Y éxitos a los que día a día aportan su granito de arena para la edificación de conocimiento, tengo el siguiente código:

Dim Nombre As String

Nombre = "C:\SistIVA-ISLR\ArchivosTxt-IVA\" & Me.TxtNombre & ".pdf"

DoCmd. OutputTo acOutputReport, "Estados", "PDFFormat(*.pdf)", Nombre

Funciona a los esperado es decir Guarda el Informe en PDF en la Carpeta y nombre establecido, pero necesito lo siguiente:

Mostrar el informe en PDF.

Que solo imprima el Registro Mostrado en el formulario.

Probé con esta instrucción

'DoCmd.OutputTo ObjectType:=acOutputReport, ObjectName:=Estados, OutputFormat:=acFormatPDF, OutputFile:=Nombre, AutoStart:=True  'False

Y da error

En espera de gran ayuda…

6 Respuestas

Respuesta

Para exportar un informe a PDF con el nombre tomado de un TextBox, puedes usar bibliotecas como iTextSharp en C#. Configuras el nombre del archivo dinámicamente basándote en el contenido del TextBox. Si buscas una solución más rápida o quieres procesar PDFs ya existentes, te recomiendo probar PDF Summarizer https://pdfsummarizer.net/es Es útil para trabajar con documentos y resúmenes PDF de manera sencilla. Además, si necesitas generar un archivo y previsualizarlo antes de guardarlo, asegúrate de establecer correctamente las rutas y permisos de escritura en tu proyecto.

Respuesta
2

¿Qué versión de Access está utilizando?

Parece que le falta las comillas en "Estado"

Perdón "Estados", algo como:

DoCmd.OutputTo ObjectType:=acOutputReport, ObjectName:="Estados", OutputFormat:=acFormatPDF, OutputFile:=Nombre, AutoStart:=True  'False

Siguiendo la explicación que le dan, solo agregaría que prefiero utilizar el control browser para mostrar el PDF y no FollowHyperlink, en este caso se debe crear un formulario con un control browser al cual se le pasa como parámetro la ruta del PDF.

Por ejemplo, llamo este formulario desde otro con la siguiente instrucción. Le paso como argumento la ruta del archivo PDF.

DoCmd.OpenForm "frmPDF", , , , , , CurrentProject.Path & "\Explicacion.pdf"

Esto me permite hacer zoom e imprimir. Al abrir este formulario se debe incluir el siguiente código:

Private Sub Form_Open(Cancel As Integer)
 On Error Resume Next
  Dim strPDF As String
  strPDF = "'" & Me.OpenArgs & "'"
  Me.WebBrowser0.ControlSource = "=" & strPDF
  Me.Caption = "Archivo PDF : " & Me.OpenArgs
End Sub
Respuesta
1

Gracias por su repuesta y orientación ambas ayudas me iluminaron quedando mi procedimiento de esta manera:

Dim Nombre As String
Me.Requery

Nombre = "C:\SistIVA-ISLR\ArchivosTxt-IVA\" & Me.TxtNombre & ".pdf" 
DoCmd.OpenReport "Estados", acPreview, , "Codigo='" & Me.TxtCodigo & "'"

DoCmd.OutputTo ObjectType:=acOutputReport, ObjectName:="Estados", OutputFormat:=acFormatPDF, OutputFile:=Nombre, AutoStart:=True 'True ESTE
DoCmd. Close acReport, "Estados"

Lo único que no deseo es que muestre el informe en Access si no directamente en PDF, opte por cerrarlo después de ejecutar el PDF... de no saltar mostrar el Informe en Access ni modo lo dejaré así...

Respuesta
1

Para que sólo te imprime el registro activo tienes que decirle que abra el informe en un registro específico. Mira si tengo el formulario y pulso el botón señalado con la flecha, primero me lo guarda como PDF en una carpeta, luego te lo muestra ( fíjate sólo en la instrucción de abrir el informe, en guardarlo y en mostrar el PDF

Cuando lo pulso, además de guardar el informe de ese registro en particular me muestra su pdf

En este caso en particular la instrucción del botón es

Private Sub Comando48_Click()
Dim s As String
s = DLookup("cliente", "clientes", "idcliente=" & Me.Idcliente & "")
DoCmd.OpenReport "facturas", acPreview, , "numfactura='" & Me.NumFactura & "'"
DoCmd.OutputTo acOutputReport, "facturas", "PDFFormat(*.pdf)", "c:\users\gonza\documentos\borrar\" & " " & "" & s & "" & " - " & Me.NumFactura & "" & ".pdf", False, "", , acExportQualityPrint
Application.FollowHyperlink "c:\users\gonza\documentos\borrar\" & " " & "" & s & "" & " - " & Me.NumFactura & "" & ".pdf"
DoCmd.Close acReport, "facturas"
DoCmd.SendObject acSendNoObject, "c:\users\gonza\documentos\borrar\" & " " & "" & s & "" & " - " & Me.NumFactura & "" & ".pdf", , "" & Me.Email & "", , , "Enviada factura", "adios", True
End Sub

Observa que le digo que me abra el informe en aquel registro en que su número de factura coincide con el número de factura que hay en ese momento en el formulario. Y para que te lo muestre se usa lo de

Applicatión FollowHyperlink

José Francisco, no lo puse porque no sabía que querías que no se mostara. Siempre puedes hacerlo como

DoCmd.OpenReport "facturas", acViewPreview, , "numfactura='" & Me.NumFactura & "'", acHidden

Es decir, te abre el informe como oculto, con lo cual no lo verás

Respuesta

Hay métodos para evitar abrir el informe y poder generar el PDF y después cerrarlo (repitiendo el ciclo con cada informe a exportar)

Requiere modificar el informe para que (en tiempo de ejecución) aplique la condición y presente los datos que se desean, esta modificación no interfiere en el uso habitual del mismo.

Es sencilla de aplicar, solo requiere el uso de una variable de texto que ha de ser declarara como publica, en ella iría la condición.

Cuando se finalice todo el proceso con el informe (o informes si es el mismo informe con diferentes datos/clientes/....) hay que vaciar la variable para que no cause problemas (es lo único que no se debe de olvidar: darle como valor una cadena vacía).

Si tienes interés aporto la información del procedimiento paso a paso.

Respuesta

Para exportar un informe a PDF con el nombre tomado de un TextBox, puedes usar bibliotecas como iTextSharp en C#. Configuras el nombre del archivo dinámicamente basándote en el contenido del TextBox. Si buscas una solución más rápida o quieres procesar PDFs ya existentes, te recomiendo probar PDF Summarizer https://pdfsummarizer.net/es Es útil para trabajar con documentos y resúmenes PDF de manera sencilla. Además, si necesitas generar un archivo y previsualizarlo antes de guardarlo, asegúrate de establecer correctamente las rutas y permisos de escritura en tu proyecto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas