mailxmail - Cursos para compartir lo que sabesManual DataReport Autor: miguel garcia 1 mailxmail - Cursos para compartir lo que sabes Presentación del curso Este curso, 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. 2 y en gran medida de las restricciones de la misma. el grado de complejidad del informe dependerá de la imaginación y tiempo que el programador pueda dedicar a esta herramienta. que tenemos una herramienta que nos va a permitir distribuir nuestros informes libremente. distintas a las ya conseguidas con Visual Basic. pretende dar unas nociones generales sobre la creación de informes con las herramientas que nos proporciona Visual Basic 6. totales. No obstante. etc. Al igual que con muchas otras herramientas de creación de informes (Crystal Reports. 3 . autorizaciones. Access.. diremos a favor de Data Report. etc.) Data Report nos va a permitir crear niveles dentro del informe. etc. Introducción El presente documento.Cursos para compartir lo que sabes 1..mailxmail .0. Estas herramientas son el Entorno de Datos (Data Environment) y el Diseñador de Informes (Data Report). sin necesidad de licencias. debajo del Entorno de datos aparece un nuevo objeto. Pues bien. Ahora vamos a definir las propiedades de la conexión. y como esta conexión va a contener los listados que van a generar nuestros informes. bueno normalmente solemos darle a nuestros objetos. nombres descriptivos para los mismos. Como vemos. 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. dteEntornoDatos. el objeto Connection. pues por eso le damos este nombre. Bueno lo primero que debemos hacer es dar un nombre a nuestro Entorno de Datos. El nombre que vamos a elegir para nuestra primera conexión va a ser el de Listados. y luego definiremos sus propiedades. Nos situaremos encima de la 4 . En un principio vamos a ponerle un nombre a esta conexión.mailxmail . Porqué este nombre. Por ejemplo. El entorno de datos (Data environment) Lo primero que veremos es cómo agregar el Entorno de Datos a nuestro proyecto.Cursos para compartir lo que sabes 2. Para ello nos colocaremos en la propiedad Nombre del DataEnvironment y escribiremos su nombre. muestra las propiedades de nuestra conexión. y pulsando el botón derecho del mismo elegimos la opción Propiedades del menú contextual.Cursos para compartir lo que sabes conexión con el ratón. En nuestro caso se ha seleccionado la base de datos Biblio.mdb. 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. 5 . que contiene la información que debe generar nuestros informes. En la pestaña Proveedor. deberemos seleccionar el motor que se encargará del manejo de las tablas de la base de datos. seleccionaremos Microsoft Jet 3. que se encuentra en el directorio VB98 de Visual Basic.51 OLE DB Provider.mailxmail . Para nuestro ejemplo. ya que nuestra base de datos está creada con Access 97. La figura a la izquierda. Cursos para compartir lo que sabes 6 .mailxmail . Vamos a crear ahora una consulta algo más compleja. así como a las consultas almacenadas en ella y a las que pudiéramos crear nosotros. pulsaremos para ello con el botón derecho. en nuestro caso será Listados. son los que se encargan de obtener las referencias a las tablas de nuestra base de datos. seleccionaremos Tabla. ya que este comando va a obtener los datos de una tabla existente en nuestra base de datos llamada Authors. sobre la conexión Listados. llamado Command1. que digamos. Normalmente es lo que haremos. iremos hasta la opción de propiedades. Este comando es muy sencillo. Los comandos Ya tenemos creada nuestra conexión. Con el botón derecho del ratón. ya que sólo vamos a trabajar con una tabla así que pulsamos aceptar para cerrar la ventana de propiedades. en la que tengamos que relacionar varias tablas. Aparece un nuevo objeto.mailxmail . Lo primero que haremos será cambiar el nombre actual por el de acmAutores y seleccionar la conexión con la que trabajaremos. ahora sólo tendremos que crear los comandos. para sacar los listados lo 7 . Tendremos que modificar sus propiedades para poder configurarlo a nuestras necesidades. Crearemos nuestro primer comando. Para el Origen de Datos.Cursos para compartir lo que sabes 3. El siguiente campo de relación será también Au_ID de la tabla Title Author. y el de nivel superior (acmTituloAutor). Para agregar un comando secundario (subcomando) bastará pulsar con el botón derecho. vamos a modificar sus propiedades. vamos a crear un comando que contenga los registros de los autores. en nuestro caso acmTituloAutor. Una solución posible sería la mostrada en la siguiente figura.mailxmail . la primera mediante comandos y subcomandos. Como Campo Primario seleccionaremos Au_ID.Cursos para compartir lo que sabes más completos posibles. A continuación vamos a explicar cómo se crean los subcomandos. que es Title Author. Un subcomando. Nos iremos a la pestaña de Relación y activaremos la opción de Relacionar con un campo primario. Seguidamente seleccionaríamos el comando primario. Ya tenemos el comando secundario intermedio. que acabamos de crear. pues la razón es que si nos fijamos en la estructura de nuestra base de datos. Veremos dos posibles soluciones. existe una tabla intermedia entre la de autores y la que contiene los títulos publicados por estos. El siguiente paso será definir una relación entre la tabla o el comando secundario. sobre el comando que queremos añadir el comando secundario. En el primer método. Por qué este nombre. y la segunda mediante consulta SQL. La primera de ellas es su nombre acmAux. 8 . es una tabla relacionada con otra que está en un nivel superior. y seguidamente definiríamos la relación. seleccionándolo en la opción Campos Secundarios y Parámetros. Pues bien esta es la tabla a la cual hará referencia este comando secundario. que se encuentra en la tabla Authors Authors. por así decirlo. Y al igual que hacíamos con los comandos. ahora pulsamos Agregar. si no estuviera activada. Resumiendo. para ello nos vamos al menú Proyecto y seleccionamos Agregar Data Report. 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. vamos a ver el aspecto que podrían tener los informes que se pueden generar con los dos comandos principales anteriores. Lo siguiente será establecer las propiedades DataSource y DataMember. 9 . A continuación. uno principal acmAutor y otros dos comandos secundarios. Bueno. vamos a hacer con el subcomando acmLibros. en nuestro caso acmAutores. 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). antes de pasar a explicar el segundo método de relacionar tablas. Recuerda que tendrás que seleccionar los campos apropiados en la pestaña Relación. que contenga la información de las tablas que queramos mostrar en el informe. seleccionando aquel comando del entorno de datos.mailxmail . hemos creado tres comandos.Cursos para compartir lo que sabes Nos queda añadir un comando secundario al subcomando acmAux. deberemos establecer la propiedad DataMember. La primera de ellas marca la fuente de datos. 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. para relacionar la tabla Titles. 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 Listado de Autores. Seleccionamos en el menú Ventana. sólo tenemos que ir incluyendo aquellos campos que queremos que aparezcan en el mismo. Ya tenemos la estructura de nuestro informe. Para ello vamos a abrir.Cursos para compartir lo que sabes Bien ya tenemos definido lo más importante en el formulario o DataReport. 10 . La idea es tener en pantalla. Mosaico Vertical. el informe y el entorno de datos. además del DataReport el entorno de datos. pulsamos Sí a la pregunta que nos hacen. abiertos a la vez. quedando algo así como lo mostrado en la figura superior. para ello pulsamos sobre el formulario con el botón derecho del ratón y seleccionamos la opción Obtener Estructura.mailxmail . el siguiente paso es obtener la estructura del informe. También vamos a introducir. . esto es válido también para el Pie de Informe. etc. Otra sección. veremos que además se pueden incluir algunos más especiales. el número de página. en nuestro caso será Autor y Año de Nacimiento. Si abrimos el cuadro de herramientas. pulsando con el botón derecho del ratón sobre la sección en la que queremos añadir el control. en la cabecera de página de nuestro informe el Título y la fecha de impresión. sin embargo. normalmente en ella colocaremos la descripción o nombre de cada campo del informe. la fecha. Antes vamos a explicar un poco la estructura de nuestro informe. veremos que existe una pestaña nueva llamada DataReport que contiene aquellos controles que pueden ser insertados en nuestro informe. no se pueden introducir. para ello seleccionaremos ambos controles del menú contextual.Cursos para compartir lo que sabes Ahora.mailxmail . es el Encabezado/Pie de Página. mostrará sólo en la primera página los datos o campos que contenga esta sección. Vamos a incluir los campos Author y Year Born. pero sí por ejemplo el título del informe. Estos campos especiales son por ejemplo la Fecha actual o la Hora. etc. antes definido. sólo tendremos que ir arrastrando los campos de la consulta hasta el informe. el Número Total de Páginas. los campos de nuestros comandos. el Título del Informe. 11 . La sección Encabezado de Informe. Sólo bastará con arrastrar el campo hasta la posición del informe donde queramos que valla. Y la sección más importante de todas es la sección Detalle. Antes de proseguir.mailxmail . Modificaremos un poco estos controles. normalmente el primero. tendremos que modificarlo en la propiedad Title Title del DataReport e introducir el texto Listado de Autores. pero en Detalle colocaremos el control texto del campo. un control texto que apunta al campo en la consulta. Ambas defines la rejilla de puntos del diseñador. Modificaremos también el 12 . comentaremos las propiedades GridX y GridY. El título. lo centraremos horizontalmente. que será la fecha de impresión. La etiqueta la llevaremos hacia la sección Encabezado de Página. uno es una etiqueta. situándola en el punto que nos interese y justamente debajo. Incluiremos otro control más. Otra propiedad importante es Centrar en la sección. En ella aparecen todos los registros de nuestra consulta. nosotros vamos a ponerlo a 10 para poder colocar mejor los controles en el formulario. de nuestro informe.Cursos para compartir lo que sabes Para definir nuestro título del informe. Vamos a insertar los campos Author y Year Born a la sección Detalle. 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 1 2. su valor por defecto es 1. por ejemplo las etiquetas cambiaremos su descripción (Caption) e introduciremos los textos Autor y Año de Nacimiento respectivamente. Si nos fijamos aparecen dos controles. que aparece cuando pulsamos sobre un control con el botón derecho del ratón. Cambiaremos también la apariencia del mismo. Y el segundo. ahora nuestro informe tiene algunas secciones más que el anterior. en la sección Pie de Página. Pues claro. Un formato A4 en horizontal equivale a unos 1 3 9 5 5 twips. También ajustaremos el tamaño de cada sección a nuestro gusto. Con esto podremos dar por terminado nuestro informe. Una vez delimitado nuestro informe (Verticalmente). a un folio A4 en vertical. subiremos el Pie de Página hasta alcanzar los campos en Detalle. ¿verdad?. tendremos que ajustar las propiedades de nuestra impresora a una orientación apropiada. Mejorable. La propiedad ReportWidth se encarga de esto. los distintos niveles (secciones) de agrupación. lo principal es tener claro la estructura de nuestro informe. El aspecto puede ser parecido a este. pero antes vamos a delimitar el tamaño del informe. etc. con lo cual a cada una de ellas se le asigna un espacio reservado en el 13 . en nuestro caso será la de papel vertical. la imaginación y el estilo personal de cada uno juegan un papel importante en el diseño de los informes. Si te fijas. 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.mailxmail . así como su posición. Has de seguir los mismos pasos que en el informe anterior. coloca en DataSource el entorno de datos y en DataMember en comando acmTituloAutor. Añadiremos el Número de Página. será el que corresponde al comando principal acmTituloAutor. Un valor de 9026 twips equivale aproximadamente. Por ejemplo. para que se vea correctamente. En nuestro caso. Un centímetro equivale a 567 Twips.Cursos para compartir lo que sabes tamaño de los controles si es necesario. El siguiente informe. claro tiene tres tablas relacionadas. La primera sección es el nivel superior.Cursos para compartir lo que sabes informe. en nuestro caso. ocupando el último nivel. pues nuestro siguiente trabajo será generar un informe que muestre los títulos de los libros. podrá ser insertado en uno inferior. El resultado ha de ser parecido a algo así. La siguiente sección. que corresponde con el comando acmTituloAutor acmTituloAutor. esta sección nos va a servir para agrupar los registros por el nombre del autor del libro. Cualquier campo perteneciente a un nivel superior. 14 . pero no al revés. Bueno. agrupados por el autor. no la vamos a usar ya que pertenece al comando o tabla auxiliar que une la tabla Authors con la de Titles Titles.mailxmail . que es la que se engloba dentro de la sección de detalle. mailxmail .Cursos para compartir lo que sabes En este informe se han añadido controles como líneas. y modificar sus propiedades. etc. En el apartado siguiente se explicará cómo hacer esto pero con el Generador SQL. 15 . formas (fondo gris de la descripción de los campos). Con estos dos ejemplos. el diseño de informes mediante comandos cuyo origen de datos sea una o varias tablas. se ha intentado explicar más o menos. Tú puedes añadir otros. que se encuentra en la tabla Publishers Publishers.mailxmail . agrupando los registros por el nombre de la compañía que lo publica. 16 . Abrimos la conexión listados y la carpeta Tablas. Nos aparece una nueva pantalla y una nueva vista llamada Vista Datos. Crearemos para ello un nuevo comando de nombre acmLibroPub.Cursos para compartir lo que sabes 4. Si te has dado cuenta. y en Titles los campos Title y Comment. Generador SQL Vamos a generar un informe relacionando la tabla Publishers y Tltles. en la tabla Publishers el campo Company Name. 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. y pulsaremos el botón Generador SQL. Puedes crear directamente aquí la consulta. Aquí encontramos todas las tablas de nuestra base de datos. está en el centro del diseñador. En nuestro caso sólo las dos tablas antes mencionadas. Bueno pues ahora sólo consiste en arrastras aquellas tablas que van a formar parte de la consulta SQL. e incluso modificarla. Si en nuestra base de datos no hemos definido las relaciones entre las tablas. en la ventana que. En esta vista tenemos agrupado nuestras conexiones y listados como si fuera un explorador. se ha ido generando la consulta SQL que corresponde a la relación que hemos creado. normalmente. eliminación.Cursos para compartir lo que sabes También es posible realizar ordenación de campos en la ventana que tienes justo arriba de la anterior. su propiedadDataSource la fijaremos al entorno de datos y la propiedad DataMember tendremos que seleccionar el comando de agrupación acmLibrosPub_Grouping. la guardaremos y se cerrará automáticamente el diseñador. La primera contiene el campo de agrupación y la segunda los campos que se mostrarán en la sección de detalle. aceptamos y observamos como nuestra consulta ha cambiado. criterios de selección. 17 . para ello tenemos que añadir a nuestro proyecto un nuevo DataReport. Es hora ya de comenzar a diseñar nuestro informe. Incluso podemos ejecutar la consulta. etc. si pulsamos con el botón derecho sobre la ventaja principal del diseñador. Si ya hemos terminado de crear la consulta. etc. los que hemos seleccionado en la consulta SQL. Una vez seleccionado el campo de agrupación. Para ello abriremos las propiedades del comando y nos iremos a la pestañaAgrupar. Aún nos queda un paso más. Nuestro comando tiene ahora sólo tres campos. dejaremos el nombre por defecto del comando de agrupación y seleccionaremos el campo para agrupar (Company Name). cambiar la consulta de selección por una de inserción.mailxmail . y es agrupar la consulta. Activaremos la casilla Agrupar Comando. conteniendo ahora dos carpetas. volviendo al entorno de datos. También es posible con el menú contextual que se abre al pulsar sobre cualquier campo de la tabla. 18 .Cursos para compartir lo que sabes Obtendremos finalmente su estructura. parecida a esta. 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. Pasaremos a colocar los campos en el informe.mailxmail . mailxmail .Cursos para compartir lo que sabes 19 . mailxmail .Cursos para compartir lo que sabes 20 . que nos permitirá realizar un recuento de todos los libros.mailxmail . En nuestro ejemplo vamos a modificar el informe rptLibrosPub y su comando asociado acmLibrosPub. Para ello. para añadir un campo agregado que muestre el número total de libros publicados por la compañía. para que esté disponible en todas las secciones. medias. es aquel que nos permite realizar sumas. 21 . sobre campos de una tabla. etc.. El lugar más apropiado es en el pie de grupo acmLibrosPub_Grouping_Footer. la función que utilizaremos será Cuenta. ya que nos da el total de libros por compañía.Cursos para compartir lo que sabes 5. Como nombre de campo elegiremos TotalLibros TotalLibros. Ya tan sólo nos queda incluir este nuevo campo en el informe. iremos a las propiedades del comando y seleccionaremos la pestaña Agregados Agregados y pulsaremos el botón Agregar. Lo agregaremos en Grouping. Campos Agregados Un campo agregado. ya que el campo que elegiremos será Title. mailxmail .Cursos para compartir lo que sabes 22 . Daremos un nombre a la función y como DataMember seleccionaremos acmLibros. que nos da el total de libros (DataField). el control rptFunction nos permite añadir campos al informe que nos ayudan a realizar cálculos sobre campos de una tabla. Añadiremos este control al pie de la sección acmTituloAutor. También podemos realizar un recuento de todos los libros publicados. en el campo FunctionType. 23 . no pertenecen al comando. ya que lo que se pretende es calcular el total de libros por autor.Cursos para compartir lo que sabes 6. El control rptFuncion Al igual que los campos agregados. Ahora nos queda seleccionar el campo que queremos contar. La diferencia está en que estos campos. y ya tenemos el total buscado. Bastará sólo con copiar el control fórmula y pegarlo en el pie de Informe. en nuestro caso el campo ISBN. rptFuncRCnt.mailxmail . sino únicamente al informe. Y por último debemos elegir el tipo de función a realizar. Cursos para compartir lo que sabes 24 .mailxmail . Enlace de los informes con la aplicación A continuación.Command `Objeto de tipo comando Dim Entorno As dteEntornoDatos `Nuestro entorno de datos 25 .Cursos para compartir lo que sabes 7. tendremos que obtener la sentencia SQL que define el comando generador.mailxmail . explicaremos cómo enlazar nuestros informes con la aplicación que estamos desarrollando.MousePointer = vbHourglass Load rptLibrosPub Screen.MousePointer = vbDefault rptLibrosPub. Pero podemos también seleccionar una serie de ellos. Private Sub Command1_Click() Dim Listado As ADODB. Ahora bastará con copiar el contenido de la ventana y pegarlo en el código siguiente. Por ejemplo. y modificar la instrucción añadiendo en la cláusula Where el criterio que nos interesa. Pues bien basta con el siguiente código. para llamar a un informe generado: Private Sub Command1_Click() Screen. por ejemplo en un botón de comando. Lo hacemos pulsando con el botón derecho sobre el comando y pulsando la opción Información de jerarquía. que cumplan cierta condición.Show vbModal End Sub De esta forma lanzaríamos el informe con todos los registros. Tal como vemos en la figura siguiente. podemos seleccionar aquellos cuya compañía sea 'A SYSTEM PUBNS'. Para ello. pero creo que con paciencia y mucha dedicación.0.51. Dejo a los lectores. el crear membretes en la cabecera de los informes. Evidentemente. COUNT(acmLibrosPub.mailxmail .mdb" Set Listado = Entorno.CommandText = " SHAPE {SELECT Publishers.Title. cuando os enfrentéis a estos menesteres. pero bueno para cosas sencillas no está nada mal. Data Source= directorio donde se encuentra biblio. Titles. Tal vez. Set Entorno = New dteEntornoDatos Entorno. siempre y cuando nos lo permita la herramienta.'Title') AS TotalLibros BY 'Company Name'" Load rptLibrosPub Screen. etc. podremos hacer todo aquello que queremos conseguir. Titles. esta forma que explicamos aquí.Comments FROM Titles. os daréis cuenta cuán difícil 26 .3.PubID = Publishers. Publishers WHERE Titles. sea la más complicada para elaborar informes con DataReport.Show vbModal End Sub El resultado lo podemos ver a continuación. así como comentarios a pie de página. ya tenemos más o menos una idea de cómo funcionan los informes en Visual Basic 6. Titles.Cursos para compartir lo que sabes Screen.Jet.OLEDB.Listados.`Company Name`.`Company Name`='A SYSTEM PUBNS' ORDER BY Publishers.ConnectionString = "Provider=Microsoft.Commands("acmLibrosPub_Grouping") Listado.MousePointer = vbDefault rptLibrosPub.MousePointer = vbHourglass 'Iniciamos el entorno de datos. quedan algunas cosas por tratar y profundizar.PubID AND Publishers.CommandType = adCmdText Listado.`Company Name`. pero hasta ahora es la que conozco y con la que me he enfrentado.Title} AS acmLibrosPub COMPUTE acmLibrosPub. Al igual que yo. Bueno. 0 de ADO que es la que manejo actualmente. que no representen mucha complejidad. 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.Cursos para compartir lo que sabes resulta modificar un objeto dentro de un DataReport. Veréis. modificar la propiedad Caption de una etiqueta englobada en la sección de encabezado. al menos en la versión 2. propiedad que tampoco podemos conocer en modo diseño o ejecución. pues no podemos (al menos yo no sé) hacer referencia a ella mediante su nombre. Ánimo a todos. disponemos de una herramienta sencilla para informes sencillos. Resumiendo.mailxmail . 27 . sólo es posible realizarlo mediante el índice que ocupa dentro de la sección. qué complicado es por ejemplo.