Imprimir informe automáticamente en PDF

Tengo un formulario con un botón, que al pulsarlo abre un informe en vista preliminar, en el mismo registro que había en el formulario. El código del botón es:

DoCmd.OpenReport "Factura", acViewPreview, "", "[Id_Fra]=" & .Id_Fra, acNormal

Ahora quisiera añadir otro botón en el mismo formularios, que en vez de abrir el informe en vista preliminar, guarde/imprima en pdf el registro con el formato: "Num_Fra-Serie.pdf" en una ubicación determinada, donde Num_Fra y Serie son dos campos del formulario.

No sé programar en VBA y lo único que he conseguido leyendo y probando es imprimir todos los registros (no solo el que me interesa), con un nombre genérico (factura.pdf).

Si alguien puede ayudarme se lo agradezco inmensamente.

1 respuesta

Respuesta
2

Lo puedes hacer de muchas formas, por ejemplo, si tengo un formulario Ventas con un botón señalado con la flecha

Cuando lo pulso, me guarda en la carpeta Facturas el archivo en PDF( no te fijes en el icono del PDF, ya que es un programa que hace lo mismo que el Adobe, pero gratis).

Al abrirlo

Puedes hacerlo con macros, aunque si te tuviera que aconsejar te diría que lo hicieras en código VB. En este caso, en las propiedades del botón-Eventos-Al hacer clic le tengo puesto

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\facturas\" & " " & "" & s & "" & "" & Me.NumFactura & "" & ".pdf", False, "", , acExportQualityPrint
DoCmd.Close acReport, "facturas"
End Sub

Si quieres hacerlo con macros, dímelo y te la pongo.

En esencia, es

Abre el informe Facturas en aquel registro en que su campo NumFactura sea igual al que figura en ese momento en el formulario. Luego guárdalo como PDF en la ruta C:\users\..... y, por último, cierra el informe Facturas.

En primer lugar muchísimas gracias Julían por contestar tan rápido.

Te comentaba soy bastante malo con el código y aunque he intentado trasladar tu respuesta a mi base de datos, solo he obtenido errores. En mi caso el informe tiene casi los mismos campos que el formulario, por lo que solo tengo que indicarle que el campo Id_Fra sea igual en ambos. En tu caso tienes que buscar datos en la tabla clientes y ahí ya me pierdo.

Como me comentabas el tema de las macros, no sé si será más fácil, ahora mismo tengo la macro que te pongo debajo en un botón del formulario y cuando se pulsa imprime el informe del mismo registro que está en el formulario correctamente.

  ¿Se podría añadir acciones para que lo guardase en pdf? y ya para nota si el nombre del pdf pudiera incorporar dos campos del formulario para que no se machacase cada pdf sería genial.

De nuevo muchas gracias por tu ayuda.

Claro que puedes hacerlo, pero una macro no es más que un trozo de código para operaciones básicas al que le han puesto un nombre "en cristiano". Luego te lo explico con macros, pero antes, haz una copia del formulario ese, y en vista diseño pulsa lo señalado con la flecha

Luego, podrás ver en el editor de VB como te ha transformado la macro en algo como

Docmd...

Que es con lo que de verdad trabaja el sistema.

Dicho esto

Puedes ver que la carpeta Facturas está vacía. Si construyo la macro como

Como no sé que campos quieres combinar para darle nombre al archivo PDF, le he puesto que ponga el número de factura y el importe de la factura en moneda de aquí. Esa macro se la asigno al evento al hacer clic del botón del ejemplo anterior. Cuando lo pulso

De todas formas, si ves que tienes problemas y quieres, repito, si quieres, mándame un mensaje a [email protected] y te mando unos ejemplos, porque también, desde el formulario Ventas, podrías elegir en que carpeta quieres guardarla, por si cada factura quisieras guardarla en una carpeta distinta, etc.

Si lo haces, en el asunto del mensaje pon tu alias Goosie, ya que si no sé quien me escribe ni los abro.

Vaya imagen de mierda que puse

Ahora sí se vé donde hay que pulsar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas