PDF Lebans los crea en blanco
Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85196
Fecha de impresión: 26/Marzo/2026 a las 17:27
Tema: PDF Lebans los crea en blanco
Publicado por: rokoko
Asunto: PDF Lebans los crea en blanco
Fecha de publicación: 21/Abril/2020 a las 20:16
|
Hola. Llevo utilizando este sistema de crear PDFs unos años, una maravilla por cierto. Pero en Access 2013 con window7 los informes me los PDF me salen blancos, sin informacion. En access 2003 y windows7 lo hace correctamente. La base de datos es MDB. Me suena que siempre trabajaba bien, pero igual estoy equivocado.
La cuestion es que en algunos equipos hay Access 2003 y en otros Access 2010, y me gustaria que siempre fuese en MDB, de hay el problema.
A ver si alguien puede averiguar por que ocurre, yo no encuentro info. Podeis descargar la base de datos de Lebans aqui. https://www.lebans.com/reporttopdf.htm" rel="nofollow - https://www.lebans.com/reporttopdf.htm
Saludos
|
Respuestas:
Publicado por: Mihura
Fecha de publicación: 21/Abril/2020 a las 22:13
|
A partir de una cierta versión de Access la rutina de Lebans casca (si no recuerdo mal es porque no puede obtener el archivo snapshot intermedio).
De todas formas en Access 2013 obtén directamente el archivo en PDF.
DoCmd.OutputTo acOutputReport, NombreReport, acFormatPDF, "C:\Temp\NombreArchivo.pdf"
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: xavi
Fecha de publicación: 21/Abril/2020 a las 23:15
|
Sin ánimo de ofender pero tener equipos con 2003, si se trata de una empresa, es para hacérselo mirar. Ya sabemos que el software no lo regalan pero hoy en día hay variedad de licencias de Office que se adaptan a cualquier economía. Voy a suponer que existen causas de fuerza mayor (no económicas) para mantener esas versiones.
La solución, si es que debe ser así, pasará por evaluar la versión de Office y lanzar la rutina de Lebans o la salida "nativa" según corresponda.
Utilizando Application.Version se obtiene el número de versión. 97: 8.0 2000: 9.0 2002: 10.0 2003: 11.0 2007: 12.0 2010: 14.0 2013: 15.0 2016: 16.0
Repito: sin ánimo de ofender.
------------- Xavi, un minyó de Terrassa
http://www.llodax.com" rel="nofollow - Mi web
|
Publicado por: rokoko
Fecha de publicación: 22/Abril/2020 a las 00:12
|
Lo se Mihura, en unos equipos hay 2003 y en otrro 2010...
Respecto a la Empresa, si es sorprendente, y es una muy grande y publica........Lo que pasa que access no una herramienta oficial por decirlo de alguna forma, pero los que trabajamos hay nos buscamos la vida para facilitarnos el trabajo.....
Estudio la forma de Xavi, pero creo que lo mas facil sera tener dos versiones de access funcionado, dependiendo del equipo. Resueltas las dudas de por que no funciona, se puede cerrar
Muchas gracias
|
Publicado por: xavi
Fecha de publicación: 22/Abril/2020 a las 00:39
|
Reabro el hilo para discrepar sobre el comentario "lo más fácil será tener dos versiones de access funcionando"
Rotundamente no.
Si mantienes 2 versiones de la aplicación cada cambio deberá hacerse 2 veces. Si se utiliza una sola versión, solo se trata de implementar la comprobación de la versión para lanzar el PDF de una forma u otra.
Es más, hasta podrías pensar en utilizar constantes de compilador para evitar posibles problemas con el OutputTo. De hecho yo tendría una función "LanzaPDF" con los argumentos necesarios en cuanto a informe, nombre de fichero, etc y, dentro de ella, escogería que forma utilizo. Algo así:
#If VBA7 Then ' Versión 7 del editor de VBA: 2010 o superior 'Código para lanzar el report por OutputTo #Else ' Version anterior a 2010 'Código para lanzar mediante Lebans #End If
|
Un saludo
------------- Xavi, un minyó de Terrassa
http://www.llodax.com" rel="nofollow - Mi web
|
Publicado por: rokoko
Fecha de publicación: 22/Abril/2020 a las 08:05
xavi escribió:
Reabro el hilo para discrepar sobre el comentario "lo más fácil será tener dos versiones de access funcionando"
Rotundamente no.
Si mantienes 2 versiones de la aplicación cada cambio deberá hacerse 2 veces. Si se utiliza una sola versión, solo se trata de implementar la comprobación de la versión para lanzar el PDF de una forma u otra.
Es más, hasta podrías pensar en utilizar constantes de compilador para evitar posibles problemas con el OutputTo. De hecho yo tendría una función "LanzaPDF" con los argumentos necesarios en cuanto a informe, nombre de fichero, etc y, |
Lo voy a probar, la aplicacion esta terminada y de hacerse alguna modificación sera pequeña, pero si, es un rollo, trabajar con dos versiones......
|
Publicado por: rokoko
Fecha de publicación: 22/Abril/2020 a las 11:00
Pues siguiendo los buenos consejos esto he probado y funciona tanto en W7 con access 2003 como con W7 y access 2013.A no ser que me digais que no es correcto, se puede cerrar, muchas gracias.
Function PDFXX()
If Application.Version = "11.0" Then
MsgBox " V 11" Dim blRet As Boolean blRet = ConvertReportToPDF(Me.Name, vbNullString, "C:\Users\W7_Virtual\Desktop\Hola.pdf", True, False, 150, "", "", 0, 0, 0)
Else MsgBox "V >11"
DoCmd.OutputTo acOutputReport, Me.Name, acFormatPDF, "C:\Users\Casa\Desktop\AAAAAAA.pdf", False
End If End Function
|
Publicado por: xavi
Fecha de publicación: 22/Abril/2020 a las 11:50
|
Para mi es correcto. Y funcionará siempre... que no tengas una máquina con Access anterior a 2003, dónde intentaria el envío OutputTo.
Para evitarlo yo haría una pequeña modificación. Convertiría el Application.Version a número y utilizaría <= en lugar de =
If Val(Application.Version)<= 11 Then ....
Un saludo
------------- Xavi, un minyó de Terrassa
http://www.llodax.com" rel="nofollow - Mi web
|
Publicado por: rokoko
Fecha de publicación: 22/Abril/2020 a las 14:54
Perfecto Xavi!!
Por mi se puede cerrar...
Saludos
|
|