Está en la página 1de 16

Creación de informes con Visual Basic 6.

0
(Guía Básica)

Elaborado por:
Jeús Valdivieso Mariscal
Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

Índice

1. INTRODUCCIÓN 3

2. EL ENTORNO DE DATOS (DATA ENVIRONMENT) 3

2.1. LOS COMANDOS 4


2.2. GENERADOR SQL 10
2.3. CAMPOS AGREGADOS 12

3. EL CONTROL RPTFUNCION 13

4. ENLACE DE LOS INFORMES CON LA APLICACION 14

5. DESPEDIDA 16

Guía Básica Página 2 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

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.

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

Guía Básica Página 3 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

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.

2.1. 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

Guía Básica Página 4 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

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 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.

Guía Básica Página 5 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

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
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.

Guía Básica Página 6 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

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 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,

Guía Básica Página 7 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

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.

Guía Básica Página 8 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

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.

Guía Básica Página 9 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

2.2. 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.

Guía Básica Página 10 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

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).

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.

Guía Básica Página 11 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

2.3. 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.

Guía Básica Página 12 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

3. 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.

Guía Básica Página 13 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

4. Enlace de los informes con la aplicacion


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.

Guía Básica Página 14 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

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') AS
TotalLibros BY 'Company Name'"

Load rptLibrosPub

Screen.MousePointer = vbDefault
rptLibrosPub.Show vbModal

End Sub

El resultado lo podemos ver a continuación.

Guía Básica Página 15 de 16


Creación de informes con Visual Basic 6.0
Autor: Jesús Valdivieso

5. Despedida
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.

Guía Básica Página 16 de 16

También podría gustarte