Está en la página 1de 14

MailxMail.

com - Cursos gratis en la web

Manual DataReport
Autor: miguel garcia

http://www.mailxmail.com - Encontraras muchos más cursos como este 1


MailxMail.com - Cursos gratis en la web

1. Introducción

El presente documento, pretende dar unas nociones generales sobre la


creación de informes con las herramientas que nos proporciona Visual
Basic 6.0.
Estas herramientas son el Entorno de Datos (Data Environment) y el
Diseñador de Informes (Data Report). Al igual que con muchas otras
herramientas de creación de informes (Crystal Reports, Access, etc.)
Data Report nos va a permitir crear niveles dentro del informe, totales,
etc.; el grado de complejidad del informe dependerá de la imaginación y
tiempo que el programador pueda dedicar a esta herramienta, y en gran
medida de las restricciones de la misma.
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.

http://www.mailxmail.com - Encontraras muchos más cursos como este 2


MailxMail.com - Cursos gratis en la web

2. El entorno de datos (Data environment)

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.
En nuestro proyecto tendremos algo parecido a lo mostrado en la figura
siguiente. Bueno lo primero que debemos hacer es dar un nombre a
nuestro Entorno de Datos. Por ejemplo, dteEntornoDatos. Para ello nos
colocaremos en la propiedad Nombre del DataEnvironment y
escribiremos su nombre.
Como vemos, debajo del Entorno de datos aparece un nuevo objeto, el
objeto Connection.
En un principio vamos a ponerle un nombre a esta conexión, y luego
definiremos sus propiedades. El nombre que vamos a elegir para
nuestra primera conexión va a ser el de Listados.

Porqué este nombre, bueno normalmente solemos darle a nuestros


objetos, nombres descriptivos para los mismos, y como esta conexión
va a contener los listados que van a generar nuestros informes, pues
por eso le damos este nombre.
Ahora vamos a definir las propiedades de la conexión. Nos situaremos
encima de la conexión con el ratón, y pulsando el botón derecho del
mismo elegimos la opción Propiedades del menú contextual.
La figura a la izquierda, muestra las propiedades de nuestra conexión.

En la pestaña Proveedor, deberemos seleccionar el motor que se


encargará del manejo de las tablas de la base de datos, que contiene la
información que debe generar nuestros informes. Para nuestro ejemplo,
seleccionaremos Microsoft Jet 3.51 OLE DB Provider, ya que nuestra
base de datos está creada con Access 97.
Ahora pulsamos el botón Siguiente y se abre la pestaña Conexión. En
ella deberemos seleccionar la base de datos de la cual tomaremos la
información para confeccionar los informes. En nuestro caso se ha
seleccionado la base de datos
Biblio.mdb, que se encuentra en el directorio VB98 de Visual Basic.

http://www.mailxmail.com - Encontraras muchos más cursos como este 3


MailxMail.com - Cursos gratis en la web

3. Los comandos

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.
Lo primero que haremos será cambiar el nombre actual por el de
acmAutores y seleccionar la conexión con la que trabajaremos, en
nuestro caso será Listados. Para el Origen de Datos, seleccionaremos
Tabla, ya que este comando va a obtener los datos de una tabla
existente en nuestra base de datos llamada Authors.
Este comando es muy sencillo, ya que sólo vamos a trabajar con una
tabla así que pulsamos aceptar para cerrar la ventana 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

http://www.mailxmail.com - Encontraras muchos más cursos como este 4


MailxMail.com - Cursos gratis en la web

superior (acmTituloAutor).
Nos iremos a la pestaña de Relación y activaremos la opción de
Relacionar con un campo primario, si no estuviera activada.
Seguidamente seleccionaríamos el comando primario, en nuestro caso
acmTituloAutor, y seguidamente definiríamos la relación. Como Campo
Primario seleccionaremos Au_ID, que se encuentra en la tabla Authors.
El siguiente campo de relación será también Au_ID de la tabla Title
Author, seleccionándolo en la opción Campos Secundarios y Parámetros,
ahora pulsamos Agregar. Ya tenemos el comando secundario
intermedio.

Nos queda añadir un comando secundario al subcomando acmAux, para


relacionar la tabla Titles, que contiene todos los títulos de libros
almacenados en la base de datos. Pues al igual que hiciéramos con el
comando secundario acmAux, vamos a hacer con el subcomando
acmLibros. Recuerda que tendrás que seleccionar los campos apropiados
en la pestaña Relación. Resumiendo, hemos creado tres comandos, uno
principal acmAutor y otros dos comandos secundarios, el primero de
ellos intermedio que sirve de vínculo de unión entre las tablas de
autores y el último subcomando que contiene la tabla de libros.
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.

Bien ya tenemos definido lo más importante en el formulario o


DataReport, el siguiente paso es obtener la estructura del informe, para
ello pulsamos sobre el formulario con el botón derecho del ratón y
seleccionamos la opción Obtener Estructura, pulsamos Sí a la pregunta
que nos hacen. Ya tenemos la estructura de nuestro informe, sólo
tenemos que ir incluyendo aquellos campos que queremos que

http://www.mailxmail.com - Encontraras muchos más cursos como este 5


MailxMail.com - Cursos gratis en la web

aparezcan en el mismo. Para ello vamos a abrir, además del DataReport


el entorno de datos.
Seleccionamos en el menú Ventana, Mosaico Vertical. La idea es tener
en pantalla, abiertos a la vez, el informe y el entorno de datos,
quedando algo así como lo mostrado en la figura superior.

Ahora, sólo tendremos que ir arrastrando los campos de la consulta


hasta el informe. Vamos a incluir los campos Author y Year Born. Antes
vamos a explicar un poco la estructura de nuestro informe. La sección
Encabezado de Informe, mostrará sólo en la primera página los datos o
campos que contenga esta sección, no se pueden introducir, sin
embargo, los campos de nuestros comandos, pero sí por ejemplo el
título del informe, el número de página, la fecha, etc. , esto es válido
también para el Pie de Informe. Si abrimos el cuadro de herramientas,
veremos que existe una pestaña nueva llamada DataReport que
contiene aquellos controles que pueden ser insertados en nuestro
informe, veremos que además se pueden incluir algunos más especiales,
pulsando con el botón derecho del ratón sobre la sección en la que
queremos añadir el control. Estos campos especiales son por ejemplo la
Fecha actual o la Hora, el Número Total de Páginas, el Título del
Informe, etc.
Otra sección, es el Encabezado/Pie de Página, normalmente en ella
colocaremos la descripción o nombre de cada campo del informe, en
nuestro caso será Autor y Año de Nacimiento. También vamos a
introducir, en la cabecera de página de nuestro informe el Título y la
fecha de impresión, para ello seleccionaremos ambos controles del
menú contextual, antes definido.

Para definir nuestro título del informe, tendremos que modificarlo en la


propiedad Title del DataReport e introducir el texto Listado de Autores.
Cambiaremos también la apariencia del mismo, lléndonos a la propiedad
Font del campo que hemos añadido y seleccionando un estilo de fuente
Negrita Cursiva y un tamaño de 12. Otra propiedad importante es
Centrar en la sección, que aparece cuando pulsamos sobre un control
con el botón derecho del ratón. El título, lo centraremos
horizontalmente. Incluiremos otro control más, que será la fecha de
impresión.
Antes de proseguir, comentaremos las propiedades GridX y GridY.
Ambas defines la rejilla de puntos del diseñador, su valor por defecto es
1, nosotros vamos a ponerlo a 10 para poder colocar mejor los controles

http://www.mailxmail.com - Encontraras muchos más cursos como este 6


MailxMail.com - Cursos gratis en la web

en el formulario.
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.
Añadiremos el Número de Página, en la sección Pie de Página. Además
vamos a modificar la fuente de texto del nombre de los campos del
informe a negrita y dibujaremos una línea debajo de los mismos. Con
esto podremos dar por terminado nuestro informe, pero antes vamos a
delimitar el tamaño del informe. La propiedad ReportWidth se encarga
de esto. Un valor de 9026 twips equivale aproximadamente, a un folio
A4 en vertical. Un formato A4 en horizontal equivale a unos 13955 twips
. Un centímetro equivale a 567 Twips. Una vez delimitado nuestro
informe (Verticalmente), para que se vea correctamente, tendremos
que ajustar las propiedades de nuestra impresora a una orientación
apropiada, en nuestro caso será la de papel vertical. El aspecto puede
ser parecido a este.

Mejorable, ¿verdad?. Pues claro, la imaginación y el estilo personal de


cada uno juegan un papel importante en el diseño de los informes. En
nuestro caso, lo principal es tener claro la estructura de nuestro
informe, los distintos niveles (secciones) de agrupación, etc.
El siguiente informe, será el que corresponde al comando principal
acmTituloAutor. Has de seguir los mismos pasos que en el informe
anterior, coloca en DataSource el entorno de datos y en DataMember en
comando acmTituloAutor. Si te fijas, ahora nuestro informe tiene
algunas secciones más que el anterior, claro tiene tres tablas
relacionadas, con lo cual a cada una de ellas se le asigna un espacio
reservado en el informe.

http://www.mailxmail.com - Encontraras muchos más cursos como este 7


MailxMail.com - Cursos gratis en la web

La primera sección es el nivel superior, que corresponde con el comando


acmTituloAutor, esta sección nos va a servir para agrupar los registros
por el nombre del autor del libro. La siguiente sección, en nuestro caso,
no la vamos a usar ya que pertenece al comando o tabla auxiliar que
une la tabla Authors con la de Titles, que es la que se engloba dentro de
la sección de detalle, ocupando el último nivel. Cualquier campo
perteneciente a un nivel superior, podrá ser insertado en uno inferior,
pero no al revés.
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.

http://www.mailxmail.com - Encontraras muchos más cursos como este 8


MailxMail.com - Cursos gratis en la web

4. Generador SQL

Vamos a generar un informe relacionando la tabla Publishers y Tltles,


agrupando los registros por el nombre de la compañía que lo publica,
que se encuentra en la tabla Publishers.
Crearemos para ello un nuevo comando de nombre acmLibroPub, y
pulsaremos el botón Generador SQL. Nos aparece una nueva pantalla y
una nueva vista llamada Vista Datos. En esta vista tenemos agrupado
nuestras conexiones y listados como si fuera un explorador. Abrimos la
conexión listados y la carpeta Tablas. Aquí encontramos todas las tablas
de nuestra base de datos.
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

http://www.mailxmail.com - Encontraras muchos más cursos como este 9


MailxMail.com - Cursos gratis en la web

agrupar (Company Name).


Una vez seleccionado el campo de agrupación, aceptamos y observamos
como nuestra consulta ha cambiado, conteniendo ahora dos carpetas. La
primera contiene el campo de agrupación y la segunda los campos que
se mostrarán en la sección de detalle. Es hora ya de comenzar a diseñar
nuestro informe, para ello tenemos que añadir a nuestro proyecto un
nuevo DataReport, su propiedad DataSource la fijaremos al entorno de
datos y la propiedad DataMember tendremos que seleccionar el
comando de agrupación acmLibrosPub_Grouping.
Obtendremos finalmente su estructura, parecida a esta. Pasaremos a
colocar los campos en el informe, en el encabezado de grupo
colocaremos el nombre de la compañía y en la sección detalle, los
campos título y comentarios del libro.

http://www.mailxmail.com - Encontraras muchos más cursos como este 10


MailxMail.com - Cursos gratis en la web

5. Campos Agregados

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.

http://www.mailxmail.com - Encontraras muchos más cursos como este 11


MailxMail.com - Cursos gratis en la web

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.

http://www.mailxmail.com - Encontraras muchos más cursos como este 12


MailxMail.com - Cursos gratis en la web

7. Enlace de los informes con la aplicación

A continuación, explicaremos cómo enlazar nuestros informes con la


aplicación que estamos desarrollando. Pues bien basta con el siguiente
código, por ejemplo en un botón de comando, para llamar a un informe
generado:
Private Sub Command1_Click()
Screen.MousePointer = vbHourglass
Load rptLibrosPub
Screen.MousePointer = vbDefault
rptLibrosPub.Show vbModal
End Sub
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.

Private Sub Command1_Click()


Dim Listado As ADODB.Command `Objeto de tipo comando
Dim Entorno As dteEntornoDatos `Nuestro entorno de datos
Screen.MousePointer = vbHourglass
'Iniciamos el entorno de datos.
Set Entorno = New dteEntornoDatos
Entorno.Listados.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.3.51; Data Source= directorio donde se
encuentra biblio.mdb"
Set Listado = Entorno.Commands("acmLibrosPub_Grouping")
Listado.CommandType = adCmdText
Listado.CommandText = " SHAPE {SELECT Publishers.`Company
Name`, Titles.Title, Titles.Comments FROM Titles, Publishers WHERE
Titles.PubID = Publishers.PubID AND Publishers.`Company Name`='A
SYSTEM PUBNS' ORDER BY Publishers.`Company Name`, Titles.Title}
AS acmLibrosPub COMPUTE acmLibrosPub, COUNT(acmLibrosPub.'Title')

http://www.mailxmail.com - Encontraras muchos más cursos como este 13


MailxMail.com - Cursos gratis en la web

AS TotalLibros BY 'Company Name'"


Load rptLibrosPub
Screen.MousePointer = vbDefault
rptLibrosPub.Show vbModal
End Sub
El resultado lo podemos ver a continuación.

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.

http://www.mailxmail.com - Encontraras muchos más cursos como este 14

También podría gustarte