Professional Documents
Culture Documents
Introducción
No obstante, diremos a favor de Data Report, que tenemos una herramienta que nos va a
permitir distribuir nuestros informes libremente, sin necesidad de licencias,
autorizaciones, etc.; distintas a las ya conseguidas con Visual Basic.
Lo primero que veremos es cómo agregar el Entorno de Datos a nuestro proyecto. Pues
bien, para ello nos iremos al menú Proyecto y elegiremos la opción Agregar Data
Environment.
Como vemos, debajo del Entorno de datos aparece un nuevo objeto, el objeto
Connection.
Ya tenemos creada nuestra conexión, ahora sólo tendremos que crear los comandos, que
digamos, son los que se encargan de obtener las referencias a las tablas de nuestra base de
datos, así como a las consultas almacenadas en ella y a las que pudiéramos crear
nosotros.
Crearemos nuestro primer comando, pulsaremos para ello con el botón derecho, sobre la
conexión Listados. Aparece un nuevo objeto, llamado Command1. Tendremos que
modificar sus propiedades para poder configurarlo a nuestras necesidades. Con el botón
derecho del ratón, iremos hasta la opción de propiedades.
Vamos a crear ahora una consulta algo más compleja, en la que tengamos que relacionar
varias tablas. Normalmente es lo que haremos, para sacar los listados lo más completos
posibles. Veremos dos posibles soluciones, la primera mediante comandos y
subcomandos, y la segunda mediante consulta SQL.
En el primer método, vamos a crear un comando que contenga los registros de los
autores. Una solución posible sería la mostrada en la siguiente figura. A continuación
vamos a explicar cómo se crean los subcomandos. Un subcomando, por así decirlo, es
una tabla relacionada con otra que está en un nivel superior. Para agregar un comando
secundario (subcomando) bastará pulsar con el botón derecho, sobre el comando que
queremos añadir el comando secundario. Y al igual que hacíamos con los comandos,
vamos a modificar sus propiedades. La primera de ellas es su nombre acmAux.
Por qué este nombre, pues la razón es que si nos fijamos en la estructura de nuestra base
de datos, existe una tabla intermedia entre la de autores y la que contiene los títulos
publicados por estos, que es Title Author. Pues bien esta es la tabla a la cual hará
referencia este comando secundario, que acabamos de crear. El siguiente paso será definir
una relación entre la tabla o el comando secundario, y el de nivel superior
(acmTituloAutor).
Bueno, antes de pasar a explicar el segundo método de relacionar tablas, vamos a ver el
aspecto que podrían tener los informes que se pueden generar con los dos comandos
principales anteriores, para ello nos vamos al menú Proyecto y seleccionamos Agregar
Data Report. Lo primero que haremos será dar un nombre a este nuevo formulario, su
nombre será rptAutores y el título (Caption) de la ventana Listado de Autores. Lo
siguiente será establecer las propiedades DataSource y DataMember. La primera de ellas
marca la fuente de datos, en definitiva la dirección de nuestra base de datos y para ello
debemos seleccionar de la lista desplegable el entorno de datos que hemos creado al
principio de este documento (dteEntornoDatos). A continuación, deberemos establecer la
propiedad DataMember, seleccionando aquel comando del entorno de datos, que
contenga la información de las tablas que queramos mostrar en el informe, en nuestro
caso acmAutores.
Y la sección más importante de todas es la sección Detalle. En ella aparecen todos los
registros de nuestra consulta.
Vamos a insertar los campos Author y Year Born a la sección Detalle, de nuestro
informe. Sólo bastará con arrastrar el campo hasta la posición del informe donde
queramos que valla. Si nos fijamos aparecen dos controles, uno es una etiqueta,
normalmente el primero. Y el segundo, un control texto que apunta al campo en la
consulta. La etiqueta la llevaremos hacia la sección Encabezado de Página, situándola en
el punto que nos interese y justamente debajo, pero en Detalle colocaremos el control
texto del campo. Modificaremos un poco estos controles, por ejemplo las etiquetas
cambiaremos su descripción (Caption) e introduciremos los textos Autor y Año de
Nacimiento respectivamente. Modificaremos también el tamaño de los controles si es
necesario, así como su posición. También ajustaremos el tamaño de cada sección a
nuestro gusto. Por ejemplo, subiremos el Pie de Página hasta alcanzar los campos en
Detalle.
Bueno, pues nuestro siguiente trabajo será generar un informe que muestre los títulos de
los libros, agrupados por el autor. El resultado ha de ser parecido a algo así.
En este informe se han añadido controles como líneas, formas (fondo gris de la
descripción de los campos), etc. Tú puedes añadir otros, y modificar sus propiedades.
Con estos dos ejemplos, se ha intentado explicar más o menos, el diseño de informes
mediante comandos cuyo origen de datos sea una o varias tablas. En el apartado siguiente
se explicará cómo hacer esto pero con el Generador SQL.
4. Generador SQL
Bueno pues ahora sólo consiste en arrastras aquellas tablas que van a formar parte de la
consulta SQL. En nuestro caso sólo las dos tablas antes mencionadas. Si en nuestra base
de datos no hemos definido las relaciones entre las tablas, tendríamos que definirlas con
sólo arrastrar el campo de unión de la primera tabla hacia el campo en la segunda tabla.
El siguiente paso será marcar sólo los campos que vamos a mostrar en el informe, en la
tabla Publishers el campo Company Name, y en Titles los campos Title y Comment.
Si te has dado cuenta, en la ventana que, normalmente, está en el centro del diseñador, se
ha ido generando la consulta SQL que corresponde a la relación que hemos creado.
Puedes crear directamente aquí la consulta, e incluso modificarla. También es posible
realizar ordenación de campos en la ventana que tienes justo arriba de la anterior,
criterios de selección, etc.
También es posible con el menú contextual que se abre al pulsar sobre cualquier campo
de la tabla. Incluso podemos ejecutar la consulta, si pulsamos con el botón derecho sobre
la ventaja principal del diseñador, cambiar la consulta de selección por una de inserción,
eliminación, etc.
Si ya hemos terminado de crear la consulta, la guardaremos y se cerrará automáticamente
el diseñador, volviendo al entorno de datos.
Nuestro comando tiene ahora sólo tres campos, los que hemos seleccionado en la
consulta SQL. Aún nos queda un paso más, y es agrupar la consulta. Para ello abriremos
las propiedades del comando y nos iremos a la pestaña Agrupar.
Activaremos la casilla Agrupar Comando, dejaremos el nombre por defecto del comando
de agrupación y seleccionaremos el campo para agrupar (Company Name).
Un campo agregado, es aquel que nos permite realizar sumas, medias, etc.; sobre campos
de una tabla. En nuestro ejemplo vamos a modificar el informe rptLibrosPub y su
comando asociado acmLibrosPub, para añadir un campo agregado que muestre el número
total de libros publicados por la compañía.
Para ello, iremos a las propiedades del comando y seleccionaremos la pestaña Agregados
y pulsaremos el botón Agregar. Como nombre de campo elegiremos TotalLibros, la
función que utilizaremos será Cuenta, que nos permitirá realizar un recuento de todos los
libros, ya que el campo que elegiremos será Title. Lo agregaremos en Grouping, para
que esté disponible en todas las secciones.
Ya tan sólo nos queda incluir este nuevo campo en el informe. El lugar más apropiado es
en el pie de grupo acmLibrosPub_Grouping_Footer, ya que nos da el total de libros por
compañía.
6. El control rptFuncion
Al igual que los campos agregados, el control rptFunction nos permite añadir campos al
informe que nos ayudan a realizar cálculos sobre campos de una tabla. La diferencia está
en que estos campos, no pertenecen al comando, sino únicamente al informe. Añadiremos
este control al pie de la sección acmTituloAutor, ya que lo que se pretende es calcular el
total de libros por autor. Daremos un nombre a la función y como DataMember
seleccionaremos acmLibros.
Ahora nos queda seleccionar el campo que queremos contar, en nuestro caso el campo
ISBN, que nos da el total de libros (DataField). Y por último debemos elegir el tipo de
función a realizar, rptFuncRCnt, en el campo FunctionType.
También podemos realizar un recuento de todos los libros publicados. Bastará sólo con
copiar el control fórmula y pegarlo en el pie de Informe, y ya tenemos el total buscado.
7. Enlace de los informes con la aplicación
De esta forma lanzaríamos el informe con todos los registros. Pero podemos también
seleccionar una serie de ellos, que cumplan cierta condición. Por ejemplo, podemos
seleccionar aquellos cuya compañía sea 'A SYSTEM PUBNS'.
Para ello, tendremos que obtener la sentencia SQL que define el comando generador. Lo
hacemos pulsando con el botón derecho sobre el comando y pulsando la opción
Información de jerarquía, Tal como vemos en la figura siguiente. Ahora bastará con
copiar el contenido de la ventana y pegarlo en el código siguiente, y modificar la
instrucción añadiendo en la cláusula Where el criterio que nos interesa.
Bueno, ya tenemos más o menos una idea de cómo funcionan los informes en Visual
Basic 6.0.
Evidentemente, quedan algunas cosas por tratar y profundizar, pero creo que con
paciencia y mucha dedicación, podremos hacer todo aquello que queremos conseguir,
siempre y cuando nos lo permita la herramienta. Tal vez, esta forma que explicamos aquí,
sea la más complicada para elaborar informes con DataReport, pero hasta ahora es la que
conozco y con la que me he enfrentado, pero bueno para cosas sencillas no está nada mal.
Dejo a los lectores, el crear membretes en la cabecera de los informes, así como
comentarios a pie de página, etc. Al igual que yo, cuando os enfrentéis a estos
menesteres, os daréis cuenta cuán difícil resulta modificar un objeto dentro de un
DataReport, al menos en la versión 2.0 de ADO que es la que manejo actualmente.
Veréis, qué complicado es por ejemplo, modificar la propiedad Caption de una etiqueta
englobada en la sección de encabezado, pues no podemos (al menos yo no sé) hacer
referencia a ella mediante su nombre, sólo es posible realizarlo mediante el índice que
ocupa dentro de la sección, propiedad que tampoco podemos conocer en modo diseño o
ejecución. Resumiendo, disponemos de una herramienta sencilla para informes sencillos,
que no representen mucha complejidad. Ánimo a todos, tal vez alguien descubra una
forma más cómoda de realizar informes con DataReport y puede ser que Microsoft
mejore su interfaz y programabilidad.