sábado, 25 de octubre de 2014

Creación de informes para aplicaciones de Access Web

     
Cuando comienzas a crear aplicaciones en Access Web, lo primero que llama la atención es que a diferencia del Access de Escritorio no tiene un módulo para la creación de informes. Son muchísimas las bondades de Access Web y no me voy a detener en este artículo a enumerarlas exhaustivamente (posibilidad de trabajar desde cualquier sitio donde haya conexión a internet al correr sobre web, la creación muy fácil e  intuitiva de los formularios, no es necesario tener conocimientos de VBA para programar multitud de automatizaciones ya que consta con un fantástico y práctico módulo de macros, etc. etc.).
El propósito de este artículo, sin embargo, es detenerme en uno de los aspectos negativos de Access Web, la inexistencia de un módulo de informes y ayudaros con mi experiencia a solventarlo, de manera que no resulte para nada un obstáculo a la hora de decidirse a crear aplicaciones en Access Web.
Access Web, está concebido actualmente por Microsoft como un programa para creación de bases de datos y aplicaciones basadas en bases de datos cuya finalidad principal es la captura de datos y su alojamiento en la nube. Y os preguntareis, seguro, ¿para que queremos una aplicación de facturación, por ejemplo, que no nos pueda reportar una factura? Que la aplicación web no pueda reportar la factura, no significa de ningún modo que no se pueda, simplemente que debemos utilizar otras vías.
¿Cómo crear entonces informes en este tipo de aplicaciones? El propio entorno de Access Web te propone la solución: Crear una base de datos para el programa cliente que establezca una conexión a su base de datos de Servicios de Access.


Con sólo hacer clic en “Crear Informes” se crea una base de datos en Access de Escritorio conectada con la base de datos de Access Web que está alojada en SQL Azure, donde poder crear tus informes.
Fácil, ¿verdad? Pero si fuese tan fácil este artículo no tendría mucha razón de ser. La realización de los informes mediante este método tan sencillo que encontramos en el mismo Access Web tiene un serio problema. Cuando atacamos las tablas para la creación de un informe, lo más habitual es tener que usar datos de varias tablas mediante consultas. Si tenemos que crear una factura, tendremos los albaranes en una tabla de albaranes, el desarrollo del albarán en otra tabla diferente, los datos del cliente, en una tabla de clientes, los productos en una tabla de productos, etc., etc. Creamos la consulta, combinamos todos los datos que necesitamos, creamos el informe y…. ¡¡¡¡¡¡horrorrrr!!!!, ejecutando consulta….. 30 segundos….. ejecutando consulta…. 1 minuto….. ejecutando consulta….. 1 minuto 30 segundos… et voilá! Aquí está nuestra factura, unos 2 minutos después de dar a vista preliminar del informe.
La creación de informes se encuentra con este serio problema de no fácil resolución…, o sí. Las consultas sobre las tablas que nos crea el propio Access Web atacan directamente las tablas vinculadas alojadas en el servidor Sql de Azure, por lo que la consulta tarda en ejecutarse un mundo.
¿Podemos convertir las tablas vinculadas en locales y así no tarda nada en hacer las consultas verdad? Genial, una solución. Pero la base de datos  está en continua transformación, metemos albaranes todos los días, hemos quitado la vinculación con las tablas donde se insertan los datos, tenemos que crear un sistema para la actualización de estos datos… bufff. Mejor mantenemos las tablas vinculadas. Esta no es la solución.

La solución es obvia, pero aun así nos llevó mucho tiempo encontrarla, buscamos en foros especializados y no encontrábamos solución. Teníamos un cliente esperando 2 minutos cada vez que quería imprimir un albarán y necesitábamos darle una respuesta. Casi arrojamos la toalla. Decidimos cambiar el sistema, en lugar de hacer los informes en Access, decidimos hacerlos en Excel, creando un cubo en PowerPivot y automatizando la creación del documento en Word, mucho trabajo, pero en cuanto estuviera listo, el cliente sólo tendría que apretar un botón y en 5 segundos tendría su factura en Word o en PDF. Nos pusimos manos a la obra, pero, de repente, se nos encendió la bombilla…..
¿Habéis pensado en la solución mientras leíais el artículo? Ahora que la sabemos, no nos explicamos cómo tardamos tanto en darnos cuenta. La solución es muy sencilla. Las consultas en las que obtenemos todos los datos para el informe que necesitamos, no hay que hacerlas en el Access de Escritorio que ataca las tablas vinculadas que están en el servidor. Las consultas hay que hacerlas en el propio servidor, es decir, hay que hacerlas en el Access Web y vincular la consulta, del mismo modo que vinculamos las tablas, en nuestro Access de Escritorio donde creamos los informes. El resultado es espectacular. Aprietas el botón para generar el informe y lo tienes abierto ipso facto. Solución sencilla, una vez que la conoces y que esperamos que resuelva vuestros problemas en la generación de informes, si alguna vez los habéis tenido.

No sabemos si Microsoft planea crear un módulo de informes para Access Web, pero ello no nos va a privar de seguir usándolo ya que son muchísimas sus ventajas y trabajamos constantemente para superar sus inconvenientes.

No hay comentarios:

Publicar un comentario