Informes - Impresión pagina actual |
Responder |
Autor | |
JOchoa
Nuevo Unido: 02/Febrero/2019 Localización: Colombia Estado: Sin conexión Puntos: 39 |
Tema: Informes - Impresión pagina actual Enviado: 23/Diciembre/2019 a las 21:52 |
Buenas tardes. Mi problema es el sgte:
Tengo un reporte generado desde una consulta el cual podría arrojar muchas páginas. El usuario de la herramienta puede ir navegando por las páginas del reporte revisando los datos o buscando datos, y de repente debe poder decidir que esa pagina en la que está en ese momento es la que quiere imprimir (por ejemplo, la pagina 21). Es claro que el usuario puede ver en qué pagina está (la 21) y en la configuración de la impresión digita que la página a imprimir es la 21, pero esto muchas veces se olvida y termina enviando a impresión un montón de páginas que no quería imprimir. Por eso lo ideal para mi solución es que cuando envía a imprimir un mensaje de advertencia le diga al usuario el número de página que va a imprimir y el usuario pueda aceptar o cancelar... o algo así. Por favor maestros, ¿Cómo puedo hacer esto? un saludo desde Colombia |
|
Jochoa
|
|
pitxiku
Colaborador Unido: 27/Septiembre/2017 Localización: En mi casa Estado: Sin conexión Puntos: 1510 |
Enviado: 24/Diciembre/2019 a las 17:34 |
Puedes usar el método DoCmd.PrintOut para enviar el objeto activo a la impresora:
- https://docs.microsoft.com/es-es/office/vba/api/access.docmd.printout Y para definir las páginas, usa la propiedad Page del informe: - https://docs.microsoft.com/es-es/office/vba/api/access.report.page%28property%29 |
|
JOchoa
Nuevo Unido: 02/Febrero/2019 Localización: Colombia Estado: Sin conexión Puntos: 39 |
Enviado: 26/Diciembre/2019 a las 16:16 |
Apreciado maestro pitxiku, gracias por su ayuda con este tema.
Le comento que he leído las paginas a las que me remitió (entendí que debo leer mejor las ayudas de microsoft) y se me ha solucionado parcialmente mi problema. Lo que he hecho es poner en un menu PopUp una opción para que el usuario imprima la página en la que se encuentra con: DoCmd.PrintOut acPages, PaginaActual, PaginaActual, , 2 Donde: PaginaActual = Reports("miReporte").Page Esto funciona BIEN cuando el usuario va avanzando de pagina en pagina hacia adelante, pero cuando el usuario se devuelve de pagina el problema que me queda es que el numero de PAGE se queda en el ultimo numero de pagina que había quedado cuando iba hacia adelante por lo cual puede imprimir la página no deseada. Intenté hacer algo contando con el evento page o format las veces que el usuario va avanzando pero no supe como contar cuando se devuelva para asi capturar la pagina actual. Si pudiera darme una ayudita con esto. Muchas gracias Maestro!
|
|
Jochoa
|
|
pitxiku
Colaborador Unido: 27/Septiembre/2017 Localización: En mi casa Estado: Sin conexión Puntos: 1510 |
Enviado: 26/Diciembre/2019 a las 19:31 |
Sí la propiedad Page no funciona bien, coloca un cuadro de texto en el informe (si es que no lo tienes), para que muestre la página actual (puedes ocultarlo o poner el color de texto blanco si no lo quieres ver); luego usa el valor de ese cuadro de texto para indicar la página a imprimir.
Editado por pitxiku - 26/Diciembre/2019 a las 19:31 |
|
JOchoa
Nuevo Unido: 02/Febrero/2019 Localización: Colombia Estado: Sin conexión Puntos: 39 |
Enviado: 26/Diciembre/2019 a las 22:32 |
Apreciado maestro pitxiku, gracias por contestar.
Le comento que ya había yo usado el cuadro de texto para hacer la impresión pero con él ocurre el mismo problema. Lo que hice fue: 1. En la función de imprimir tomé el valor del cuadro de texto así: intPaginaActual = Reports("miReporte").txtPaginaActual DoCmd.PrintOut acPages, intPaginaActual, intPaginaActual, , 1 Esto funciona bien cuando el usuario va hacia adelante en las paginas del reporte, pero cuando se devuelve el valor de txtPaginaActual sigue siendo el último que tenia cuando empezó a devolverse a pesar de que en la pantalla SÍ se muestre bien el valor de la página. 2. Creé una variable pública intPaginaActual y en el evento Detalle_Format del reporte la hacía igual al valor de txtPaginaActual. Pero pasa el mismo problema puesto que este evento no corre cuando se devuelve el usuario de pagina puesto que ya había corrido antes por lo cual esta variable siempre será igual al último valor de página generado Como podrá ver, sigo con el problema. Si se le ocurre otras ideas, se lo agradezco. un abrazo
|
|
Jochoa
|
|
javier.mil
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador Unido: 10/Agosto/2005 Localización: España Estado: Sin conexión Puntos: 4812 |
Enviado: 27/Diciembre/2019 a las 19:21 |
Mirate de la DEMO 24 de mi web http://www.accessdemo.info/ A ver si te sirve ....
|
|
JOchoa
Nuevo Unido: 02/Febrero/2019 Localización: Colombia Estado: Sin conexión Puntos: 39 |
Enviado: 28/Diciembre/2019 a las 09:55 |
Maestro Javier, gracias por su aporte. Ciertamente el ejemplo sí que me sirve pues aprendí como imprimir la pagina que corresponde al dato actual y sin siquiera tener que abrir el reporte. Pero para la duda que generó este hilo me temo que no aplicaría puesto que se trata de imprimir la pagina actual en la que el usuario está posicionado en un reporte ya abierto.
un abrazo
|
|
Jochoa
|
|
pitxiku
Colaborador Unido: 27/Septiembre/2017 Localización: En mi casa Estado: Sin conexión Puntos: 1510 |
Enviado: 31/Diciembre/2019 a las 16:40 |
2 cosas: 1. Siento no haber contestado antes, pero he estado un pelín liado. 2. No me había dado cuenta que no se resetea el contador al ir hacia atrás. Si en tu vista previa sólo muestras una página, una posibilidad es usar 2 botones para cambiar de página, que no sean los de Access. Pueden estar en un formulario emergente o en el ribbon. Así, podemos usar SendKeys para mandar el cambio de página, y tener una variable que almacene el número de página. En mis pruebas, he usado lo siguiente: - Informe Clientes: el que abro para probar. - Formulario con los siguientes controles: - txtPagina: Cuadro de texto para pruebas: muestra el número de página en el informe. - cmdAdelante: Botón para ir página adelante en el informe. - cmdAtras: Botón para ir página atrás en el informe. - cmdImprimir: Imprime la página actual en el informe. Y el código en el formulario es el siguiente:
Editado por pitxiku - 31/Diciembre/2019 a las 16:41 |
|
JOchoa
Nuevo Unido: 02/Febrero/2019 Localización: Colombia Estado: Sin conexión Puntos: 39 |
Enviado: 31/Diciembre/2019 a las 20:02 |
Maestro pitxiku. Muchas gracias por su apoyo (sobre todo que estamos a pleno fin de año!)
Le comento que he practicado esta propuesta. El problema que ahora se me presentó es que dado que el usuario puede hacer zoom para hacer revisión de los caracteres pequeños del informe, ya el SendKeys "{PGUP}" y el SendKeys "{PGDN}" no cambian la pagina sino que la suben o la bajan y con ello pues se descontrola el conteo. Pensé en la alternativa de restringir de alguna forma el cambio de zoom pero la verdad es que dado el diseño del reporte (por algunas letras muy pequeñas) es muy necesario el tener que aumentar el zoom en muchas ocasiones.
|
|
Jochoa
|
|
pitxiku
Colaborador Unido: 27/Septiembre/2017 Localización: En mi casa Estado: Sin conexión Puntos: 1510 |
Enviado: 02/Enero/2020 a las 15:01 |
Entonces, poco más se me ocurre. Tal vez se pueda acceder a la casilla dónde aparece el número de página mediante el Api de Windows y tomar el número de alguna forma, pero no tengo tiempo para hacer ese tipo de pruebas.
Otra posibilidad es seguir insistiendo con los usuarios, para que se acostumbren a marcar los números de página que desean imprimir. Más complicado de conseguir, pero tal vez sea el método más efectivo. |
|
JOchoa
Nuevo Unido: 02/Febrero/2019 Localización: Colombia Estado: Sin conexión Puntos: 39 |
Enviado: 03/Enero/2020 a las 09:00 |
Muchas gracias maestro Pitxicu. Sus aportes fueron muy valiosos.
un abrazo desde Palmira Colombia Puede cerrarse este hilo.
|
|
Jochoa
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |