Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Manual DataReport
Autor: miguel garcia
1. Introduccin
El presente documento, pretende dar unas nociones generales sobre la creacin de informes con las herramientas que nos proporciona Visual Basic 6.0. Estas herramientas son el Entorno de Datos (Data Environment) y el Diseador de Informes (Data Report). Al igual que con muchas otras herramientas de creacin 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 imaginacin 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.
Porqu este nombre, bueno normalmente solemos darle a nuestros objetos, nombres descriptivos para los mismos, y como esta conexin 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 conexin. Nos situaremos encima de la
En la pestaa Proveedor, deberemos seleccionar el motor que se encargar del manejo de las tablas de la base de datos, que contiene la informacin 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 botn Siguiente y se abre la pestaa Conexin. En ella deberemos seleccionar la base de datos de la cual tomaremos la informacin 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.
3. Los comandos
Ya tenemos creada nuestra conexin, ahora slo 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 pudiramos crear nosotros. Crearemos nuestro primer comando, pulsaremos para ello con el botn derecho, sobre la conexin Listados. Aparece un nuevo objeto, llamado Command1. Tendremos que modificar sus propiedades para poder configurarlo a nuestras necesidades. Con el botn derecho del ratn, iremos hasta la opcin de propiedades. Lo primero que haremos ser cambiar el nombre actual por el de acmAutores y seleccionar la conexin 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 slo vamos a trabajar con una tabla as que pulsamos aceptar para cerrar la ventana de propiedades.
Vamos a crear ahora una consulta algo ms compleja, en la que tengamos que relacionar varias tablas. Normalmente es lo que haremos, para sacar los listados lo
Nos queda aadir un comando secundario al subcomando acmAux, para relacionar la tabla Titles, que contiene todos los ttulos de libros almacenados en la base de datos. Pues al igual que hiciramos con el comando secundario acmAux, vamos a hacer con el subcomando acmLibros. Recuerda que tendrs que seleccionar los campos apropiados en la pestaa Relacin. Resumiendo, hemos creado tres comandos, uno principal acmAutor y otros dos comandos secundarios, el primero de ellos intermedio que sirve de vnculo de unin entre las tablas de autores y el ltimo subcomando que contiene la tabla de libros. Bueno, antes de pasar a explicar el segundo mtodo de relacionar tablas, vamos a ver el aspecto que podran 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 ttulo (Caption) de la ventana Listado de Listado de Autores. Lo siguiente ser establecer las propiedades DataSource y DataMember. La primera de ellas marca la fuente de datos, en definitiva la direccin 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 continuacin, deberemos establecer la propiedad DataMember, seleccionando aquel comando del entorno de datos, que contenga la informacin de las tablas que queramos mostrar en el informe, en nuestro caso acmAutores.
Bien ya tenemos definido lo ms importante en el formulario o DataReport, el siguiente paso es obtener la estructura del informe, para ello pulsamos sobre el formulario con el botn derecho del ratn y seleccionamos la opcin Obtener Estructura, pulsamos S a la pregunta que nos hacen. Ya tenemos la estructura de nuestro informe, slo tenemos que ir incluyendo aquellos campos que queremos que aparezcan en el mismo. Para ello vamos a abrir, adems 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.
10
Ahora, slo 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 seccin Encabezado de Informe, mostrar slo en la primera pgina los datos o campos que contenga esta seccin, no se pueden introducir, sin embargo, los campos de nuestros comandos, pero s por ejemplo el ttulo del informe, el nmero de pgina, la fecha, etc. , esto es vlido tambin para el Pie de Informe. Si abrimos el cuadro de herramientas, veremos que existe una pestaa nueva llamada DataReport que contiene aquellos controles que pueden ser insertados en nuestro informe, veremos que adems se pueden incluir algunos ms especiales, pulsando con el botn derecho del ratn sobre la seccin en la que queremos aadir el control. Estos campos especiales son por ejemplo la Fecha actual o la Hora, el Nmero Total de Pginas, el Ttulo del Informe, etc. Otra seccin, es el Encabezado/Pie de Pgina, normalmente en ella colocaremos la descripcin o nombre de cada campo del informe, en nuestro caso ser Autor y Ao de Nacimiento. Tambin vamos a introducir, en la cabecera de pgina de nuestro informe el Ttulo y la fecha de impresin, para ello seleccionaremos ambos controles del men contextual, antes definido.
11
Para definir nuestro ttulo del informe, tendremos que modificarlo en la propiedad Title Title del DataReport e introducir el texto Listado de Autores. Cambiaremos tambin la apariencia del mismo, llndonos a la propiedad Font del campo que hemos aadido y seleccionando un estilo de fuente Negrita Cursiva y un tamao de 1 2. Otra propiedad importante es Centrar en la seccin, que aparece cuando pulsamos sobre un control con el botn derecho del ratn. El ttulo, lo centraremos horizontalmente. Incluiremos otro control ms, que ser la fecha de impresin. Antes de proseguir, comentaremos las propiedades GridX y GridY. Ambas defines la rejilla de puntos del diseador, su valor por defecto es 1, nosotros vamos a ponerlo a 10 para poder colocar mejor los controles en el formulario. Y la seccin ms importante de todas es la seccin Detalle. En ella aparecen todos los registros de nuestra consulta. Vamos a insertar los campos Author y Year Born a la seccin Detalle, de nuestro informe. Slo bastar con arrastrar el campo hasta la posicin 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 seccin Encabezado de Pgina, situndola 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 descripcin (Caption) e introduciremos los textos Autor y Ao de Nacimiento respectivamente. Modificaremos tambin el
12
Mejorable, verdad?. Pues claro, la imaginacin y el estilo personal de cada uno juegan un papel importante en el diseo de los informes. En nuestro caso, lo principal es tener claro la estructura de nuestro informe, los distintos niveles (secciones) de agrupacin, 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 ms que el anterior, claro tiene tres tablas relacionadas, con lo cual a cada una de ellas se le asigna un espacio reservado en el
13
La primera seccin es el nivel superior, que corresponde con el comando acmTituloAutor acmTituloAutor, esta seccin nos va a servir para agrupar los registros por el nombre del autor del libro. La siguiente seccin, 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 Titles, que es la que se engloba dentro de la seccin de detalle, ocupando el ltimo nivel. Cualquier campo perteneciente a un nivel superior, podr ser insertado en uno inferior, pero no al revs. Bueno, pues nuestro siguiente trabajo ser generar un informe que muestre los ttulos de los libros, agrupados por el autor. El resultado ha de ser parecido a algo as.
14
En este informe se han aadido controles como lneas, formas (fondo gris de la descripcin de los campos), etc. T puedes aadir otros, y modificar sus propiedades. Con estos dos ejemplos, se ha intentado explicar ms o menos, el diseo de informes mediante comandos cuyo origen de datos sea una o varias tablas. En el apartado siguiente se explicar cmo hacer esto pero con el Generador SQL.
15
4. Generador SQL
Vamos a generar un informe relacionando la tabla Publishers y Tltles, agrupando los registros por el nombre de la compaa que lo publica, que se encuentra en la tabla Publishers Publishers. Crearemos para ello un nuevo comando de nombre acmLibroPub, y pulsaremos el botn 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 conexin listados y la carpeta Tablas. Aqu encontramos todas las tablas de nuestra base de datos. Bueno pues ahora slo consiste en arrastras aquellas tablas que van a formar parte de la consulta SQL. En nuestro caso slo las dos tablas antes mencionadas. Si en nuestra base de datos no hemos definido las relaciones entre las tablas, tendramos que definirlas con slo arrastrar el campo de unin de la primera tabla hacia el campo en la segunda tabla. El siguiente paso ser marcar slo 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 diseador, se ha ido generando la consulta SQL que corresponde a la relacin que hemos creado. Puedes crear directamente aqu la consulta, e incluso modificarla.
16
Activaremos la casilla Agrupar Comando, dejaremos el nombre por defecto del comando de agrupacin y seleccionaremos el campo para agrupar (Company Name). Una vez seleccionado el campo de agrupacin, aceptamos y observamos como nuestra consulta ha cambiado, conteniendo ahora dos carpetas. La primera contiene el campo de agrupacin y la segunda los campos que se mostrarn en la seccin de detalle. Es hora ya de comenzar a disear nuestro informe, para ello tenemos que aadir a nuestro proyecto un nuevo DataReport, su propiedadDataSource la fijaremos al entorno de datos y la propiedad DataMember tendremos que seleccionar el comando de agrupacin acmLibrosPub_Grouping.
17
18
19
20
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 aadir un campo agregado que muestre el nmero total de libros publicados por la compaa. Para ello, iremos a las propiedades del comando y seleccionaremos la pestaa Agregados Agregados y pulsaremos el botn Agregar. Como nombre de campo elegiremos TotalLibros TotalLibros, la funcin 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 slo nos queda incluir este nuevo campo en el informe. El lugar ms apropiado es en el pie de grupo acmLibrosPub_Grouping_Footer, ya que nos da el total de libros por compaa.
21
22
6. El control rptFuncion
Al igual que los campos agregados, el control rptFunction nos permite aadir campos al informe que nos ayudan a realizar clculos sobre campos de una tabla. La diferencia est en que estos campos, no pertenecen al comando, sino nicamente al informe. Aadiremos este control al pie de la seccin acmTituloAutor, ya que lo que se pretende es calcular el total de libros por autor. Daremos un nombre a la funcin 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 funcin a realizar, rptFuncRCnt, en el campo FunctionType.
Tambin podemos realizar un recuento de todos los libros publicados. Bastar slo con copiar el control frmula y pegarlo en el pie de Informe, y ya tenemos el total buscado.
23
24
mailxmail - Cursos para compartir lo que sabes 7. Enlace de los informes con la aplicacin
A continuacin, explicaremos cmo enlazar nuestros informes con la aplicacin que estamos desarrollando. Pues bien basta con el siguiente cdigo, por ejemplo en un botn 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 lanzaramos el informe con todos los registros. Pero podemos tambin seleccionar una serie de ellos, que cumplan cierta condicin. Por ejemplo, podemos seleccionar aquellos cuya compaa sea 'A SYSTEM PUBNS'. Para ello, tendremos que obtener la sentencia SQL que define el comando generador. Lo hacemos pulsando con el botn derecho sobre el comando y pulsando la opcin Informacin de jerarqua, Tal como vemos en la figura siguiente. Ahora bastar con copiar el contenido de la ventana y pegarlo en el cdigo siguiente, y modificar la instruccin aadiendo en la clusula 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
25
Bueno, ya tenemos ms o menos una idea de cmo funcionan los informes en Visual Basic 6.0. Evidentemente, quedan algunas cosas por tratar y profundizar, pero creo que con paciencia y mucha dedicacin, podremos hacer todo aquello que queremos conseguir, siempre y cuando nos lo permita la herramienta. Tal vez, esta forma que explicamos aqu, sea la ms 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 pgina, etc. Al igual que yo, cuando os enfrentis a estos menesteres, os daris cuenta cun difcil
26
27