CMS modules by everest poker.

Informes

Imprimir
Valoración del Usuario:  / 2
MaloBueno 
Categoría: Teórico-práctico
Escrito por Neckkito

Si queréis bajaros este artículo en pdf pulsad aquí.

 

Índice de contenidoInformes


¡HÁGAME UN INFORME DE ESTE ARTÍCULO!
PREPARANDO EL TERRENO PARA NUESTROS INFORMES
INFORME: INFORME
NUESTRO “AMIGUETE” EL ASISTENTE
PARAMETRIZANDO UN INFORME
ORDENANDO Y AGRUPANDO, O AGRUPANDO Y ORDENANDO
INFORME CON SUBINFORMES
UN INFORME EN BLANCO: ¿PARA QUÉ?
ABRIR UN INFORME FILTRADO
¿Y SI UN INFORME NO TIENE REGISTROS?
Y FIN DE ESTE INFORME

¡HÁGAME UN INFORME DE ESTE ARTÍCULO!
Vamos a tocar el siguiente objeto de Access, que son los informes. Ya aviso que, personalmente, odio trabajar con informes (je, je), por lo que mi predisposición no es demasiado “buena” hacia este tipo de objeto (pero no os preocupéis, que después de “estudiar” este artículo podréis hacer informes “chulos”…)

Una de las primeras cosas que debemos tener claras es que un informe es para mostrar resultados, no para manipular registros. ¿Por qué digo esto? Porque he recibido consultas que empiezan con: “¿Cómo puedo hacer que un informe cambie…?”. Para manipular datos y registros tenemos los formularios y las consultas (o directamente actuando sobre las tablas). Un informe muestra, como indica su nombre, simplemente información contenida en nuestras tablas. Sí podemos cambiar la forma de presentación de dicha información, pero “poca” cosa más.


En este artículo veremos varias maneras de crear un informe, comentaremos los elementos más usuales de un informe, cómo añadir parámetros a un informe, como añadir campos calculados y cómo interactuar con un informe a través de código VBA (y, si se me ocurre algo, dejaré caer algún truquillo relativo a los informes).


También debo añadir que doy por supuesto que os habéis leído los artículos sobre formularios. Eso significa que, salvo que sea necesario, en tema de código no voy a dar de nuevo las mismas explicaciones, para no hacer el artículo demasiado largo ni para repetirme. Es por ello por lo que, si no habéis leído dichos artículos (Formularios (II) sobre todo), os recomiendo una “leída rápida”, al menos en aquellos puntos donde se comenta el código VBA.


Y, como siempre, os podéis bajar la mini aplicación de ejemplo aquí.


Dicho lo anterior… ¡informemos!


PREPARANDO EL TERRENO PARA NUESTROS INFORMES
Al igual que hicimos con los artículos sobre formularios (ver la sección Objetos de la web) vamos a realizar la explicación de los informes a través de un ejemplo más o menos práctico. Y, para ello, necesitaremos crear tablas y un formulario para operar sobre los informes.


Advertiros que, para este ejemplo, no vamos a crear una estructura óptima de base de datos. Con ello quiero decir que las tablas que vamos a crear serán las mínimas, sin relaciones entre ellas, y con campos que se podrían estructurar de otra manera. Pero como lo que nos importa en estos momentos son los informes, no vamos a “perder tiempo” realizando una BD “impecable”. Os ruego pues que no toméis este ejemplo como la manera más correcta de crear una estructura de tablas. La idea es centrarse exclusivamente en los informes, pero, lógicamente, necesitamos “algo” para tener datos que mostrar.


Así pues vamos a crear una BD nueva. En ella vamos a situar las siguientes tablas:


    · TVtas: que contendrá los siguientes campos:
o [IdVta]: autonumérico
o [NomVend]: texto
o [Zona]: texto
o [ImpVta]: moneda


    · Tcompras: que contendrá los siguientes campos
o [IdCompra]: autonumérico
o [NomVend]: texto
o [ImpCompra]: moneda


La idea que subyace en el ejemplo es que los vendedores de la empresa tienen potestad para ordenar compras de productos que a su vez deben vender a nuestros clientes. Por lo tanto, interesa saber no sólo si son buenos vendedores sino también son buenos “compradores”. Lo veremos a nivel global, sin complicar “la cosa” con diferenciación de productos.


Y para tener datos necesitamos introducir datos, por lo que para el ejemplo tendremos cinco vendedores, de manera que los registros nos queden de la siguiente manera:


Tabla TVtas:

Informes1

Tabla TCompras:

Informes2

Ahora creamos un formulario en blanco, al que llamaremos FMenu. Este será nuestro formulario de trabajo.


INFORME: INFORME
Vamos a ver la manera más simple y más rápida de crear un informe (para versiones de Access 2007 y posteriores), y lo haremos con la información de la tabla TCompras.


Para ello sólo debemos hacer lo siguiente:


1.- En el panel de exploración seleccionamos la tabla TCompras, de manera que quede resaltada.
2.- Nos vamos al menú Crear->Grupo de opciones “Informes”->Botón Informe. Hacemos click sobre este botón.
3.- Vemos que automáticamente se nos crea un informe con la información de la tabla “pura y dura”. Guardamos este informe con el nombre de RCompras.


Si ahora situamos el informe en vista diseño podremos cambiar algunos detalles, como por ejemplo el título del informe, los encabezados, el logo y algún que otro detalle que consideremos interesante (eso lo dejo a vuestro libre albedrío).


Truco: en los informes adquiere una importancia especial el formato condicional, puesto que nos permite llamar la atención sobre datos que consideramos destacables.


Imaginemos que queremos ver “a primera vista” aquellas compras que han pasado de las 800 unidades monetarias. Para ello hacemos lo siguiente:


1.- Situamos el informe en vista diseño.
2.- Seleccionamos, en el detalle del informe, el campo [ImpCompra], de manera que nos quede resaltado.
3.- En el menú Diseño->Grupo de opciones “Fuente”->Botón “Condicional”, hacemos click sobre este botón.
4.- Configuramos la condición 1, de manera que nos quede lo siguiente:
El valor del campo es / mayor o igual que / 800
y seleccionamos el color de fuente: rojo y negrita
5.- Aceptamos.


Si ahora situamos el informe en vista Informes veremos el efecto de nuestro formato condicional.


Nota: así como en el artículo Formularios (I) explicábamos cómo configurar las propiedades de un formulario, lo explicado ahí sirve prácticamente también para los informes. Por ejemplo, si sacamos las propiedades del informe y nos vamos a la Pestaña Formato->Nombre, y escribimos INFORME COMPRAS, el resultado al ver el informe por pantalla será más “profesional”.


Y ahora vamos a por la parte final: cómo sacar el informe desde nuestro formulario FMenu. Para ello debemos seguir los siguientes pasos:
1.- Situamos FMenu en vista diseño. Añadimos un botón de comando y le ponemos de nombre cmdRCompras (Propiedades->Pestaña Otras->Nombre).
2.- En el evento “Al hacer click” del botón le generamos el siguiente código (doy por supuesto que, tras los artículos de formularios, ya tenemos claro cómo hacer eso):


---
Private Sub cmdRCompras_Click()
    DoCmd.OpenReport “RCompras”, acViewPreview
End Sub
---


Ojo: como vemos al DoCmd le hemos añadido como argumento acViewPreview, lo que implica que obtendremos una vista previa del informe. Si lo que queremos es enviarlo directamente a la impresora lo que debemos escribir es lo siguiente:


---
Private Sub cmdRCompras_Click()
    DoCmd.OpenReport “RCompras”, acViewNormal
End Sub
---


Y, por último, si lo queremos ver como se ve cuando hacemos doble click directamente sobre el informe, lo que deberíamos escribir es lo siguiente:


---
Private Sub cmdRCompras_Click()
    DoCmd.OpenReport “RCompras”, acViewReport
End Sub
---


NUESTRO “AMIGUETE” EL ASISTENTE
Aunque utilizar el asistente es un proceso guiado y no tiene mayor dificultad, vamos a ver cómo crear un informe a través del asistente para examinar algunas configuraciones que pueden sernos bastante útiles.


Vamos allá:
1.- Nos vamos a menú Crear->Grupo de opciones Informes->Asistente para informes. Hacemos click sobre ese botón y se nos inicia el asistente.
2.- Seleccionamos la tabla TVtas, y añadimos todos los campos de esa tabla.
3.- Vamos a añadir un nivel de agrupamiento. Para agrupar por zonas seleccionamos el campo [Zona] y pulsamos el botón (>).
4.- Ahora se nos ha activado un botón que anteriormente aparecía atenuado, que es “Opciones de agrupamiento…”. Hacemos click sobre él.
5.- Vemos que ahora nos sale una serie de opciones de agrupamiento. ¿Para qué sirve esto? Básicamente por si queremos que los valores de los campos se nos agrupen por algún tipo de categoría determinada por las letras iniciales del valor del campo.


¿Hablo en chino? La verdad es que me ha quedado una explicación maravillosa pero que ni yo mismo entiendo. Un ejemplo lo clarificará todo: imaginemos que tenemos los siguientes valores en el campo [cargo]: Director comercial / Director ejecutivo / Director financiero / Responsable ventas / Responsable compras / Manager marketing / Manager contabilidad.


Si queremos agrupar por “cargos”, en función de la ubicación jerárquica del cargo, podríamos agrupar por las tres primeras letras, por ejemplo. Así, en el informe obtendríamos un agrupamiento de todos los directores (Dir), de todos los responsables (Res) y de todos los manager (Man).


6.- Cancelamos esta opción porque a nosotros, en estos momentos, no nos es de utilidad.
7.- En la siguiente pantalla que nos aparece vamos a ordenar por nombre de vendedor, con ordenación ascendente (de la A a la Z).
8.- Todavía en esa pantalla vemos un botón que nos indica “Opciones de resumen”. Hacemos click sobre él.
9.- Vemos que automáticamente el asistente nos muestra sólo los campos cuyos valores pueden “resumirse”; en  nuestro caso, [ImpVta]. Marcamos el check correspondiente a Suma. Podemos mostrar así la suma en la sección detalle y resumen o sólo en la sección resumen. Nosotros dejamos la opción predeterminada, que es la primera. Y, cómo queremos ver los datos porcentuales, marcamos el check “Calcular el porcentaje total por sumas”. Aceptamos.
10.- Aplicamos la distribución y la orientación que consideremos las idónea para nuestro informe. En nuestro ejemplo dejamos los valores que salen por defecto (pero estaría bien que “jugarais” un poco para ver los diferentes resultados).
11.- Aplicamos el estilo que más nos guste.
12.- Aplicamos el título RVtas (ya lo cambiaremos más tarde a través de las propiedades). Así ya nos guardará el informe con ese nombre. Podemos ver directamente el informe o modificarlo. Nosotros vamos a verlo directamente para saber qué debemos modificar.


Y ya tenemos nuestro informe creado. Veremos que es posible que haya campos demasiado pequeños que no se muestran, los nombres de la cabecera no son demasiado elegantes, etc. Vamos a poner remedio a eso.


13. Abrimos el informe en vista diseño (basta con cerrar la vista preliminar). Modificamos:
En el encabezado del informe, el título del mismo (RVtas -> Informe Ventas)
En el encabezado de página, las etiquetas con el nombre de los campos. Hacemos la etiqueta correspondiente a [ImpVta] un poco más grande ampliándola hacia la derecha (y el campo también se nos redimensionará).
En la sección Pie Zona borramos la cuadro de texto que pone “=Resumir por …”. A la derecha del informe, correspondiente a lo que en el informe pone “Suma” y “Estandar”, redimensionamos los cuadros de texto extendiéndolos hacia la izquierda (recordad que para una selección múltiple debemos mantener pulsada la tecla mayúsculas –shift-).
Finalmente, en el pie del informe, y también a la derecha, redimensionamos el cuadro de texto que nos da la suma total de ventas.


Lógicamente, podemos configurar otras opciones a nuestro gusto. Os animo a que “toqueteéis” diferentes características. También os recuerdo lo que comentábamos en el epígrafe anterior relativo al formato condicional, por si lo queréis utilizar.


Y, finalmente, vamos a colocar un botón en nuestro FMenu para abrir el informe. Imagino que ya sabéis cómo hacerlo, pero, por si acaso, os lo indico aquí:


1.- Añadimos un botón de comando. Le ponemos de nombre cmdRVtas. En el evento “Al hacer click” le generamos el siguiente código:


---
Private Sub cmdRVtas_Click()
    DoCmd.OpenReport “Rvtas”, acViewPreview
End Sub
---


PARAMETRIZANDO UN INFORME
El uso de parámetros es muy limitado en los informes (si lo comparamos con las consultas). Voy a poner un ejemplo muy simple porque, visto uno, vistos todos. Los parámetros en un informe son simplemente para incluir alguna información adicional en el mismo.


Vamos a crear un parámetro muy simple:
1.- Seleccionamos la tabla TVtas y la seleccionamos para que quede remarcada.
2.- Menú Crear->Grupo de opciones Informes->Informe. Hacemos click sobre el botón.
3.- Guardamos el informe con el nombre RVtasParam
4.- Situamos el informe en vista diseño
5.- Hacemos un poco más grande el área correspondiente a Pie del informe (arrastramos el área existente hacia abajo). Ahí insertamos un cuadro de texto.
6.- En la etiqueta de ese cuadro de texto escribimos: “Informe elaborado por:”
7.- Dentro del cuadro de texto (que ahora pone “Independiente”) escribimos lo siguiente:
=[“¿Autor?”]
8.- Ponemos el informe en vista Informes. Ahora nos aparecerá una ventana que nos pedirá el autor. Escribimos nuestro nombre, aceptamos y… ¡sorpresa!


No debemos olvidarnos de nuestro formulario FMenu. Insertamos en él un botón de comando, le ponemos de nombre cmdRVtasParam y le asignamos, al evento “Al hacer click”, el siguiente código:


---
Private Sub cmdRVtas_Click()
    DoCmd.OpenReport “RVtasParam”, acViewPreview
End Sub
---


ORDENANDO Y AGRUPANDO, O AGRUPANDO Y ORDENANDO
Vamos a ver en este apartado cómo podemos hacerle un par de “perrerías” a nuestro informe con la finalidad de adaptarlo a nuestras necesidades.


Vamos a copiar el informe RVtasParam y lo vamos a pegar con el nombre de RVtasConf, porque lo vamos a configurar a nuestro gusto.


Como todo lo que concierne a diseño “visual”, la tarea va a ser un poco “laboriosa” (que no lo es tanto). Si alguien se pierde, o no ve claro lo que quiero decir (porque a veces es difícil explicar con palabras    un tema visual) puede ver cómo lo he hecho en la aplicación de ejemplo.


Un informe suele tener las siguientes secciones, por defecto: encabezado/pie de informe, encabezado/pie de página y sección detalle. Nosotros podemos añadir más secciones, según nuestros intereses.


Vamos a ver cómo.


1.- Para que no moleste borramos, en el pie del informe, nuestro parámetro (etiqueta y cuadro de texto) “Informe elaborado por”. Redimensionamos el área del pie de informe (arrastrando su extremo inferior hacia arriba).
2.- Nos situamos en cualquier espacio en blanco del informe y pulsamos el botón derecho del ratón. En el menú emergente que nos aparece seleccionamos la opción “Ordenar y agrupar”. Veremos que abajo nos aparece un nuevo “espacio” llamado “Agrupación, orden y total”, con dos recuadros que nos permitirán agrupar y ordenar.
3.- Hacemos click sobre el recuadro “Agregar un grupo”. Nos aparecerá una pequeña ventana con los nombres de los campos. Clickamos sobre el campo [NomVend]. Ahora el espacio “Agrupación, orden y total” nos habrá cambiado ligeramente, y podremos ver que nos indica que vamos a “Agrupar en NomVend con la A en la parte superior. Eso significa que vamos a hacer una ordenación ascendente.
4.- El formulario también nos ha cambiado. Ahora podemos ver que se ha añadido una nueva sección, denominada “Encabezado NomVend”. Podemos cerrar la ventana “Agrupación, orden y total” a través de la pequeña X que hay en su parte superior derecha (ojo, la X de la ventana, no la X de eliminación de nuestra recién creada agrupación).
5.- Seleccionamos el campo NomVend, de manera que nos quede resaltado, y pulsamos CTRL+X (cortar).
6.- Hacemos click sobre el área de la sección “Encabezado NomVend” (nos quedará su título marcado más oscuro) y pulsamos la combinación de teclas CTRL+V (pegar). Veremos que nuestro campo NomVend aparece dentro de esa sección. Redimensionamos el área de la sección para que nos quede más pequeña.
7.- Si ahora situamos el informe en vista Informes podremos ver el resultado de nuestras “gestiones”. Evidentemente “falta” algo a nuestro informe, que es el total por cada vendedor. Vamos a solucionar eso.
8.- Situamos el informe en vista diseño. Hacemos click derecho en cualquier espacio en blanco y volvemos a seleccionar “Ordenar y agrupar”.
9.- Vemos que aparece nuestra conocida ventana de “Agrupación, orden y total”, con la ordenación que hemos creado. A su derecha vemos que hay una opción que indica “Más >”. Hacemos click sobre ella.
10.- De todas la opciones que nos aparecen ahí (no las explicaremos todas por cuestión de espacio, aunque por intuición podemos “captar” qué es lo que hacen) elegimos la que pone “con total ImpVta” haciendo click sobre la pequeña flecha que hay a su derecha. Se nos abrirán una serie de subopciones para esta opción elegida.
11.- De estas subopciones comprobamos que lo que queremos es total de ImpVta (¡no de IdVta!), evidentemente por suma, y marcamos el check “Mostrar en pie de grupo”.
12. Salimos (haciendo click en cualquier espacio en blanco) y cerramos “Agrupación, orden y total”. Veremos que ahora, en nuestro informe ha aparecido una nueva sección, que es “Pie NomVend”, con un campo (=Suma[ImpVta]). Redimensionamos el área de esta sección.
13.- Si ahora volvemos a poner el informe en vista Informes podremos comprobar los resultados.


Vamos a aprovechar que estamos “con las manos en la masa” para hacerle algunas cosillas más a nuestro informe.


Formato condicional: empecemos con otra utilidad del formato condicional. Supongamos que queremos marcar en rojo aquellos vendedores que no han llegado a vender las 1000 unidades monetarias (probablemente para darles un tirón de orejas). ¿Cómo lo hacemos?


1.- Seleccionamos el único campo que tenemos en la sección “Pie NomVend”. Sacamos sus propiedades y nos vamos a la pestaña Otras->Nombre y substituimos el valor que hay ahí por txtTotalxVend
2.- Seleccionamos ahora el campo NomVend del “Encabezado NomVend”, de manera que nos quede resaltado.
3.- Hacemos click sobre el botón Condicional (menú Diseño->Grupo de opciones Fuente->Condicional).
4.- Ahí debemos escribir lo siguiente, en Condición 1:
La expresión es / [txtTotalxVend]<1000
y marcar el color de fuente como rojo.
5.- Si ahora ejecutamos el informe veremos que a los pobrecillos que no han llegado a un total de 1000 u.m. en ventas “les hemos sacado los colores”.


Salto de página: por motivos ocultos nuestr@ jefa/e quiere una página por cada vendedor. Así que habrá que separar las páginas cuando “cambie” el nombre del vendedor. Vamos a hacerlo:
1.- Hacemos un poquito más grande el área de la sección “Pie NomVend”
2.- Nos vamos a menú Diseño->Controles->Botón “Insertar o quitar salto de línea”. Hacemos click sobre él.
3.- En el área de la sección “Pie NomVend”, justo por encima de “Pie de página”, insertamos ese salto de línea.


Y ya está. Sólo queda remarcar que cuando situamos el informe en vista Informes se nos muestra toda la información por pantalla, por lo que no podremos ver el efecto de nuestro salto de línea. Para poder apreciarlo “en toda su plenitud” debemos situar el informe en vista preliminar.


Sumas continuas: aunque para nuestro ejemplo no tiene mucho sentido creo que esta es una opción interesante, por lo que os la explicaré.
1.- En la sección “Detalle”, a la derecha del campo [ImpVta], añadimos un cuadro de texto. Eliminamos su etiqueta.
2.- Nos pondrá, en su interior, “Independiente”, cambiamos eso y escribimos, dentro del cuadro de texto, la expresión:
=[ImpVta]
3.- Sacamos las propiedades de este cuadro de texto y nos vamos a la pestaña Formato->Formato. Seleccionamos el formato moneda.
4.- Ahora nos vamos a la pestaña Datos->Suma continua. Ahí le seleccionamos la opción “sobre grupo” (porque queremos que nos vaya acumulando el importe de las ventas por cada venta).


En definitiva, ese campo actúa como actuaría, en abstracto, la fórmula:


Saldo = saldo anterior + venta actual


Finalmente, como siempre, abrimos nuestro formulario FMenu, introducimos un botón de comando al que llamamos cmdRVtasConf y al evento “Al hacer click” le generamos el siguiente código:


---
Private Sub cmdRVtas_Click()
    DoCmd.OpenReport “RVtasConf”, acViewPreview
End Sub
---


INFORME CON SUBINFORMES
Viene nuestr@ jefa/e con una sonrisa en los labios y nos dice alegremente: “dentro de una hora quiero un informe donde se vean juntos las compras y las ventas por vendedor… No, que sea en media hora”.


“Glupsss”


Vamos a ver cómo podemos complacer tan amable petición, y además de manera rápida.
1.- Creamos una consulta de selección en vista diseño. Añadimos la tabla TVtas y seleccionamos sólo el campo [NomVend] y lo añadimos al grid de la consulta. Convertimos esa consulta en una consulta de totales y la guardamos con el nombre de CVendedores, y la cerramos. Seleccionamos la consulta recién creada, de manera que quede resaltada.
2.- Vamos al menú Crear->Grupo de opciones Informes->Informe. Hacemos click sobre ese botón.
3.- Situamos el informe que nos sale en vista diseño. Lo guardamos como RSubInforme
4.- Aumentamos el área de la sección detalle.
5.- En la sección “Pie del informe” eliminamos el cuadro de texto que nos pone =Cuenta(*), a no ser que queramos saber el número de vendedores que tenemos.
6.- Insertamos un subinforme debajo de [NomVend], lo más a la izquierda que podamos. Se nos abrirá el asistente. Lo configuramos de la siguiente manera:
         Usar tablas y consultas existentes
         Tabla: TCompras, y añadimos todos los campos disponibles
         Definimos nuestra propia relación. En Campos del formulario/informe elegimos el campo [NomVend], y en campos  del subformulario/subinforme elegimos el campo [NomVend].
         Guardamos el subinforme con el nombre subRCompras
7.- Insertamos un subinforme debajo del subinforme que acabamos de crear. Se nos abrirá el asistente. Lo configuramos de la siguiente manera:
         Usar tablas y consultas existentes
         Tabla: TVtas, y añadimos todos los campos disponibles
         Definimos nuestra propia relación. En Campos del formulario/informe elegimos el campo [NomVend], y en campos del subformulario/subinforme elegimos el campo [NomVend].
         Guardamos el subinforme con el nombre subRVentas
8.- Situamos el informe en vista Presentación y realizamos los cambios de diseño que consideremos oportunos. Para el ejemplo, he redimensionado campos y tamaño de los subinformes de manera que me quepan uno al lado del otro.
9.- Abrimos, en vista diseño, subRCompras. Hacemos más grande el área correspondiente a la sección “Pie del informe”. Ahí insertamos un cuadro de texto, a la altura del campo [ImpCompra].
10.- En la etiqueta de ese cuadro de texto escribimos (sin comillas) “Total:”.
11.- Sacamos las propiedades del cuadro de texto  y nos vamos a la pestaña Otras ->Nombre, y le ponemos de nombre txtTotalCompras
12.- Nos vamos a la pestaña Formato->Formato, y seleccionamos Moneda.
13.- Finalmente nos vamos a la pestaña Datos->Origen del control, y escribimos:
=Suma([ImpCompra])
14.- Abrimos, en vista diseño, subRVtas. Hacemos más grande el área correspondiente a la sección “Pie del informe”. Ahí insertamos un cuadro de texto, a la altura del campo [ImpVta].
15.- En la etiqueta de ese cuadro de texto escribimos (sin comillas) “Total:”.
16.- Sacamos las propiedades del cuadro de texto  y nos vamos a la pestaña Otras ->Nombre, y le ponemos de nombre txtTotalVtas
17.- Nos vamos a la pestaña Formato->Formato, y seleccionamos Moneda.
18.- Finalmente nos vamos a la pestaña Datos->Origen del control, y escribimos:
=Suma([ImpVta])
Vamos a insertar unos campos calculados en nuestro informe, para dejar con la boca abierto a nuest@ jefa/e
19.- Situamos RSubInforme en vista diseño. Debajo de nuestros formularios insertamos tres cuadros de texto. A la etiqueta del primero le pondremos “Total compras:”, al segundo “Total ventas:” y al último “Beneficio:”
20.- Para llamar al valor de un campo que está dentro de un subinforme, de manera general, debemos emplear la expresión:
Reports!NombreInforme.NombreSubInforme.Report.Campo.Value


Así pues, para el primer cuadro de texto debemos sacar sus propiedades y
         Pestaña Formato->Formato: moneda
         Pestaña Otras->Nombre: txtTCompras


Y dentro del cuadro de texto escribimos lo siguiente:
=Reports!RSubInforme.subRCompras.Report.txtTotalCompras.Value


Para el segundo cuadro de texto configuramos su formato como moneda, le ponemos de nombre txtTVtas y dentro del mismo escribimos:
=Reports!RSubInforme.subRVtas.Report.txtTotalVtas.Value


Finalmente, para el cuadro de texto que nos debe dar el benefio configuramos su formato como moneda, le ponemos de nombre txtBeneficio y dentro del mismo escribimos:
=[txtTVtas]-[txtTCompras]


Configuramos algunos aspectos de diseño a nuestro gusto y… “voilà”. Nuestro informe “express” listo.


Una vez más nos vamos a nuestro FMenu y añadimos un botón de comando, al que llamaremos cmbVtasCompras, y le asignamos el siguiente código:


---
Private Sub cmdRVtas_Click()
    DoCmd.OpenReport “RSubInforme”, acViewPreview
End Sub
---


Y eso es todo. Ahora nuestr@ jefa/e tendrá su informe y su idea de ponernos en un compromiso… a la basura.


UN INFORME EN BLANCO: ¿PARA QUÉ?
La respuesta más evidente a esta pregunta es: para lo que lo necesitemos. Vamos a ver una utilidad práctica que suele dar buenos resultados.


La idea es imprimir uno de nuestros informes, por ejemplo RCompras, que nos ha quedado muy bonito, pero además queremos añadir una portada “super-fashion” para hacer rabiar a la/al jefa/e. Elijo este informe porque con este ejemplo no tiene sentido elegir la opción de vista previa del informe, y lo que vamos a sacar va a ser por impresora. Si lo probamos en nuestra casa sólo “gastaremos” dos hojas de papel.


1.- Nos vamos a menú Crear->Grupo de opciones Informes->Informe en blanco. Hacemos click sobre ese botón.
2.- Lógicamente nos saldrá un informe en blanco (curioso, ¿verdad?). Lo guardamos con el nombre de RPortadaCompras y lo situamos en vista diseño.
3.- Configuramos esa portada como más nos guste. Añadimos el logo de la empresa, las imágenes que queramos, los títulos y textos que consideremos necesarios, etc.


Truco: si insertamos una etiqueta y queremos, dentro de ese cuadro de etiqueta, escribir en una línea aparte, debemos pulsar la combinación de teclas CTRL+Enter. Así conseguiremos un salto de línea.


Ahora simplemente debemos irnos a nuestro FMenu, crear un botón de comando, al que llamaremos cmdRComprasPortada, y asignarle el siguiente código:


---
Private Sub cmdRComprasPortada_Click()
    DoCmd.OpenReport "RPortadaCompras", acNormal
    DoCmd.OpenReport "RCompras", acNormal
End Sub
---


Truco: si queremos imprimir el informe a pdf todo junto (portada más informe) podemos utilizar el programa gratuito PDFCreator, el cual nos instala una impresora virtual en pdf. Cuando nos salga la ventana de opciones de impresión, al darle al botón de imprimir, en vez de guardarlo le decimos que queremos poner la impresión en cola de impresión (en inglés, Wait-Collect). Ahora veremos que nos aparecen dos líneas: una con la impresión de la portada y la otra con la impresión del informe. Nos vamos a menú Documento->Combinar todo, y nos lo juntará en un solo documento. Ahora ya podemos hacer click sobre el primer botón de la izquierda (el de la impresora con un punto rojo) y guardar nuestro pdf con el nombre que queramos.


Eso sí, la impresora PDFCreator deberá ser nuestra impresora predeterminada.


Sólo me queda comentaros que con un informe en blanco podemos llegar al súmum de la personalización. Si queremos hacer un informe, por ejemplo, sobre la tabla TCompras, podríamos empezar con un informe en blanco. De ahí sacaríamos las propiedades del informe y en la pestaña Datos->Origen del registro podríamos seleccionar TCompras. Pulsando el botón “Agregar campos existentes” podríamos ir añadiendo los campos que quisiéramos, y a partir de ahí configuraríamos nuestro informe totalmente a nuestro gusto. Evidentemente, esto es para quien le guste pegarse un “trabajazo” impresionante sobre un informe.


ABRIR UN INFORME FILTRADO
Muy brevemente veremos que se puede abrir un informe aplicando un filtro sobre un campo existente. El ejemplo que pondremos aquí es muy simple, pero lo importante es “coger” la mecánica del asunto.


Imaginemos que la/el pesad@ de nuestr@ jefa/e nos pide el informe de compras-ventas, pero que sólo quiere ver los datos de Isabel. Eso lo podemos conseguir de la siguiente manera:


1.- Ponemos un botón en nuestro FMenu y lo llamamos cmdFiltraNombre. A ese botón le asignamos el siguiente código:


---
Private Sub cmdFiltraNombre_Click()
    Dim vNombre As Variant
    vNombre = InputBox("¿Vendedor?", "FILTRO", "")
    If IsNull(vNombre) Or vNombre = "" Then
        MsgBox "No ha escrito ningún nombre o el valor introducido no es correcto"
        Exit Sub
    End If
    DoCmd.OpenReport "RSubInforme", acViewPreview, , "[NomVend] ='" & vNombre & "'"
End Sub
---


Y eso es todo. Ahora, en el InputBox que nos salga, escribiremos el nombre del vendedor y nos saldrán sólo sus datos.


¿Y SI UN INFORME NO TIENE REGISTROS?
Por suerte para nosotros nuestro amigo Access ya tiene contemplada esta posibilidad, por lo que el proceso para tomar una decisión en el caso de que no haya registros en un informe es muy sencilla.


Vamos a operar sobre RSubInforme. Veamos los pasos que debemos hacer:
1.- Situamos RSubInforme en vista diseño. Sacamos sus propiedades y nos vamos a la pestaña Eventos. Ahí buscamos el evento “Al no haber datos”.
2.- A ese evento le generamos el siguiente código:


---
Private Sub Report_NoData(Cancel As Integer)
    MsgBox "No se han encontrado registros", vbInformation, "AVISO"
    Cancel = True
End Sub
---


Y eso es todo. Si intentamos abrir el formulario y no hubiera registros nos saltaría el aviso y no se abriría ningún informe.


Sí es importante, como comentábamos cuando hablábamos de los formularios, tener presente el efecto “global” de programar un nuevo código. ¿Por qué digo esto? Porque si ahora pulsamos sobre nuestro botón que nos filtra por nombre de vendedor, y le ponemos un nombre de un vendedor inexistente, nos avisará de que no hay registros, pero nos saltará un mensaje de error de código. Deberemos pues solucionar esta eventualidad.


Para ello sacamos el código del botón cmdFiltraNombre y modificaos ligeramente el código, añadiéndolo un pequeño control de errores, de manera que nos quede así:


---
Private Sub cmdFiltraNombre_Click()
On Error GoTo sol_err
    Dim vNombre As Variant
    vNombre = InputBox("¿Vendedor?", "FILTRO", "")
    If IsNull(vNombre) Or vNombre = "" Then
        MsgBox "No ha escrito ningún nombre o el valor introducido no es correcto"
        Exit Sub
    End If
   
    DoCmd.OpenReport "RSubInforme", acViewPreview, , "[NomVend] ='" & vNombre & "'"
    Exit Sub
sol_err:
    Exit Sub
End Sub
---


Y FIN DE ESTE INFORME
Bueno. Creo que con lo que hemos explicado aquí ya nos pueden salir unos informes bastante “potables” (al menos para contentar a la/el jefa/e). Lo ideal sería que “toquetearais”, en base a lo explicado, vuestros futuros informes para conseguir otros “diseños” o efectos, pero creo que la base ya está sentada.


¡Suerte!
 
--FIN DEL ARTÍCULO--

 

Wednesday the 13th. Joomla 2.5 Templates. Neckkito's baby 2012 --- Hosted by: www.siliconproject.com.ar
Copyright 2012

©