tecnologÍas de la informaciÓn Área … · carpeta “ejemplos” incluida en la carpeta de este...

16
TECNOLOGÍAS DE LA INFORMACIÓN ÁREA SISTEMAS INFORMÁTICOS Desarrollo de Aplicaciones I Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 85 Al final se obtiene el ejemplo funcionando, el código de este ejemplo ha sido adjuntado a la carpeta “Ejemplos” incluida en la carpeta de este manual. 4.3.- Creación de reportes. Cuando una organización desarrolladora de software implementa una solución a una necesidad especifica de un cliente. Entrega un producto final como resultado del proyecto que cumple los requerimientos del cliente. Uno de los requerimientos del cliente es que el sistema software tenga la capacidad de arrojar información relevante y relativamente útil proveniente de una fuente de datos y tenerla disponible en el momento requerido. Esta información por lo general suele ser información estadística. La información arrojada debe convertirse en un documento llamado Reporte o informe. La función del usuario final es realizar su labor cotidiana apoyándose en la nueva herramienta que se le ha proporcionado. Img. 4.3.1.- Aplicación funcional con la que interactúa el usuario.

Upload: truongmien

Post on 09-Oct-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 85

Al final se obtiene el ejemplo funcionando, el código de este ejemplo ha sido adjuntado a la

carpeta “Ejemplos” incluida en la carpeta de este manual.

4.3.- Creación de reportes.

Cuando una organización desarrolladora de software implementa una solución a una necesidad

especifica de un cliente. Entrega un producto final como resultado del proyecto que cumple los

requerimientos del cliente.

Uno de los requerimientos del cliente es que el sistema software tenga la capacidad de arrojar

información relevante y relativamente útil proveniente de una fuente de datos y tenerla disponible

en el momento requerido.

Esta información por lo general suele ser información estadística.

La información arrojada debe convertirse en un documento llamado Reporte o informe.

La función del usuario final es realizar su labor cotidiana apoyándose en la nueva herramienta que

se le ha proporcionado.

Img. 4.3.1.- Aplicación funcional con la que interactúa el usuario.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 86

Durante la interacción con la aplicación, el usuario elige guardar la información para continuar con

su labor.

Confirmando el servicio y guardar cambios:

La información es almacenada en la fuente de datos del sistema, desde la cual podrá ser

recuperada y reutilizada.

La información almacenada está organizada en distintas tablas relacionadas.

Img. 4.3.2.- Aplicación funcional con la que interactúa el usuario.

Img. 4.3.3.- Tabla “Pacientes” de la aplicación.

Img. 4.3.4.- Tabla “Estudios” de la aplicación.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 87

Muestra los servicios que han sido registrados:

Sin importar como el sistema almacena, organiza y procesa la información para generar el

resultado final, lo que quiere el usuario es visualizar la información lista para ser impresa o

guardada como documento.

¿Qué hacen los desarrolladores?

La organización desarrolladora de software utiliza herramientas e implementa mecanismos que le

permitan obtener los datos y generar el informe.

Consultas.

Vistas

Procedimientos almacenados.

Métodos

Img. 4.3.5.- Tabla “Servicios Registrados” de la aplicación.

Img. 4.3.6.- Visualización de reportes.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 88

Herramientas para Diseñar y generar informes.

o Crystal Reports (pago).

o Report Document (Visual Studio)

o JasperReport (libre)

Crear los informes en Visual Studio.

Microsoft Visual Studio 2010 incluye la funcionalidad de diseño de informes y los controles

ReportViewer, que le permiten agregar informes con todas las características a las aplicaciones

personalizadas. Los informes pueden contener datos tabulares, agregados y multidimensionales.

Los controles ReportViewer le permitirán procesar y mostrar el informe en la aplicación. Hay dos

versiones del control.

Para utilizar un control ReportViewer en la aplicación, debe saber cómo agregar el control al

formulario del proyecto, configurar el control para utilizar una definición de informe local o informe

de servidor, actualizar las referencias de orígenes de datos y comprobar e implementar los

informes y el control en la aplicación. Para obtener toda la información referente a la creación y

visualización de informes, consulte http://msdn.microsoft.com/es-

es/library/ms251671%28v=VS.100%29.aspx

Modificaremos el ejemplo de autos, propietarios y marcas, para lo cual queremos imprimir en un

reporte el contenido del datagridview (los datos que se muestran como resultado de crear tipos

anónimos).

Los reportes no aceptan tipos anónimos y mucho menos las propiedades de navegación que

tenemos en el modelo, eso impedirá que nuestro informe muestre los datos que deseamos.

La solución es crear Vistas y Procedimientos almacenados en nuestra base de datos e importarlos

a nuestro modelo.

La vista podemos utilizarla también para cargar los datos en el datagridview y llenar el informe al

mismo tiempo, y el procedimiento almacenado para recuperar datos específicos y utilizarlo para

llenar el informe.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 89

Otra solución para llenar el informe sería crear nuestras propias clases con las propiedades

necesarias y crear colecciones de objetos de estas clases y pasarlas al datasource del informe.

Crear una vista en la BD desde visual studio.

Abra la base de datos en el explorador de servidores y sobre vistas, haga clic derecho y

seleccione agregar nueva vista.

La vista debe devolver Número de Serie del auto, nombre de la Marca, Modelo, Color y nombre

del Propietario.

El código SQL de la vista creada es el siguiente:

SELECT dbo.Auto.NoSerie, dbo.Marca.Nombre AS Marca, dbo.Auto.Modelo, dbo.Auto.Color, dbo.Propietario.Nombre + ' ' + dbo.Propietario.Apellidos AS Propietario FROM dbo.Auto INNER JOIN dbo.Marca ON dbo.Auto.IdMarca = dbo.Marca.IdMarca INNER JOIN dbo.Propietario ON dbo.Auto.IdPropietario = dbo.Propietario.Id Guarde la vista como vAuto.

Crear un procedimiento almacenado en la BD desde visual studio.

En el explorador de servidores y sobre procedimientos almacenados, haga clic derecho y

seleccione agregar nuevo procedimiento almacenado.

El código sql para campos a devolver por el procedimiento almacenado serán los mismos que los

de la vista.

El código SQL quedará así: CREATE PROCEDURE dbo.SPAutos ( @marca varchar(50) ) AS SELECT Auto.NoSerie, Marca.Nombre AS Marca, Auto.Modelo, Auto.Color, Propietario.Nombre + ' ' + Propietario.Apellidos AS Propietario FROM Auto INNER JOIN

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 90

Marca ON Auto.IdMarca = Marca.IdMarca INNER JOIN Propietario ON Auto.IdPropietario = Propietario.Id WHERE (Marca.Nombre = @marca) RETURN

Guarde el procedimiento almacenado y cierre las pestañas correspondientes.

Actualizar el modelo.

Los nuevos elementos deben ser agregados a nuestro modelo, para ello, en el explorador de

soluciones abra el archivo Modelo.edmx, visualizara el diseño del modelo.

Haga clic derecho sobre cualquier área del modelo y seleccione Actualizar modelo desde base

de datos.

Aparecerá el asistente, seleccione los nuevos elementos a agregar (en la pestaña Agregar, utilice

Actualizar o Eliminar para realizar las acciones correspondientes) y seleccione Finalizar.

Img. 4.3.7.- Actualizar modelo.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 91

El modelo actualizado quedará de esta forma:

En el modelo observamos que la vista es agregada como una nueva entidad (nueva clase), pero

el procedimiento almacenado no aparece; los procedimientos almacenados no crean nuevas

entidades, los procedimientos almacenados deben importarse como funciones en el modelo.

Importar procedimientos almacenados como función.

Abra el explorador de modelos (botón derecho sobre cualquier área del modelo / Explorador de

modelos).

Expanda el nodo Procedimientos almacenados.

Haga clic derecho sobre el procedimiento almacenado a importar y seleccione Agregar

importación de función.

Img. 4.3.8.- Modelo actualizado.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 92

Agregando funciones:

En la ventana que se muestra:

En Nombre de la importación de función: nombre de la función que existirá en el modelo,

nombre con el cual deberá ser invocado el procedimiento almacenado.

Para ver los campos que devuelve el procedimiento almacenado, haga clic en Obtener

información de función de columna.

En la ventana aparecerán los datos de los campos que devuelve el SP.

Puede crear una nueva clase con las propiedades especificadas como campos del SP, para ello

haga clic en Crear nuevo tipo complejo, el nombre especificado en Complejo será el nombre de

la nueva clase.

Img. 4.3.9.- Explorador de modelos.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 93

Para terminar la importación, haga clic en Finalizar.

Ya con la vista y el procedimiento almacenado en nuestro modelo, guarde los cambios y cierre el

modelo, ahora procedemos a diseñar nuestros informes.

Crear formulario donde se mostrará el informe.

Agregue un nuevo formulario llamado InformeFrm al cual debe agregar el control ReportViewer.

Img. 4.3.10.- Importar procedimiento almacenado como función.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 94

Aplicando informes:

Agregue un nuevo elemento “Informe” al proyecto.

Se mostrará el diseñador de informes donde empezaremos a agregar elementos al diseño.

Img. 4.3.11.- Formulario que mostrará el informe.

Img. 4.3.12.- Agregar un elemento Informe al proyecto.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 95

Se debe configurar la fuente de datos del informe, para

ello, en la ventana “Datos del informe” elija Nuevo /

Conjunto de datos.

Se abrirá la ventana de configuración de la fuente de datos, en la cual especificamos el nombre

del DataSet para nuestro informe, en origen de datos, mostrará como única opción el nombre de

nuestra conexión de base de datos “BaseDatosEntities”, al seleccionarla en conjunto de datos

disponibles localizaremos el nombre de la clase que contiene las propiedades que deseamos

incluir en nuestro informe.

Si en origen de datos se encuentra vacío o el nombre de la clase que buscamos no se encuentra,

deberemos configurar un nuevo origen de datos, para ello:

Haga clic en nuevo, se mostrará el asistente de origen de datos.

Seleccionamos Objeto y damos clic en Siguiente.

Expanda el nombre del proyecto.

o Expanda el espacio de nombres en el que se encuentra la clase.

o Seleccione la clase que contiene las propiedades que deseamos incluir en nuestro

informe (El nombre de nuestra vista vAuto).

Img. 4.3.13.- Datos de informe.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 96

Seleccionando objetos:

Haga clic en Finalizar. Veremos ahora el conjunto de datos seleccionado y el nombre de la clase como conjunto de

datos.

Haga clic en Finalizar.

Img. 4.3.14.- Localizar la clase para utilizar como origen de datos.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 97

Propiedades del conjunto de datos:

Agregue una nueva tabla al diseño del informe, arrastre los campos de Datos informe a las

columnas de la tabla.

Puede agregar encabezado y pié de página para el informe, agregar título, y campos especiales en el informe. Guarde los cambios en el diseño y cierre el diseño del informe.

Img. 4.3.15.- Localizar la clase para utilizar como origen de datos.

Img. 4.3.16.- Diseñar el informe.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 98

Vuelva al formulario que contiene el ReportViewer y asigne el informe creado.

Al asignar el informe, en el formulario se creará un nuevo elemento vAutoBindingSource el cual

contiene una propiedad DataSource al cual debemos asignar la lista de elementos que deben

cargarse en el informe.

Para acceder al elemento vAutoBindingSource desde cualquier clase, cambie su nivel de

accesibilidad a público.

Ahora en nuestro formulario ListaAutosFrm, agregaremos un botón llamado ImprimirBtn.

Img. 4.3.17.- Asignar el informe al ReportViewer.

Img. 4.3.18.- Cambiar el modificador de acceso.

Img. 4.3.19.- Agregar botón imprimir al formulario.

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 99

En nuestra clase ListaAutosFrm, debemos crear un campo que almacene un objeto de la clase

InformeFrm (Formulario que mostrará el informe)

publicpartialclassListaAutosFrm : Form { BaseDatosEntities BD = newBaseDatosEntities(); privateInformeFrm informe = newInformeFrm();

Modificar nuestro métodollamado CargarLista() para que deje de utilizar tipos anónimos y ahora

utilice nuestra vista vAuto y la misma vista llene el informe.

privatevoid CargarLista() { //sincronizar nuestro modelo de datos cargado en memoria //con la base de datos volviendo a inicializar el objeto BD = newBaseDatosEntities(); //limpiar la fuente de datos del datagridview this.ListaDtg.DataSource = null; //cargar los resultados de la vista al grid this.ListaDtg.DataSource = BD.vAuto; //limpiar los datos del informe this.informe.vAutoBindingSource.DataSource = null; //volver a cargar la lista al informe this.informe.vAutoBindingSource.DataSource = BD.vAuto.ToList(); }

Modificar también el código de nuestro combobox, pero este debe cargar la lista de autos

correspondientes a la marca seleccionada con los resultados del procedimiento almacenado.

privatevoid PorMarcaCmb_SelectedValueChanged(object sender, EventArgs e) { if (datoscargados) { if(this.PorMarcaCmb.Text.Trim() == "Todas") { CargarLista(); } else { this.ListaDtg.DataSource = null; //cargar la lista de los autos de la marca seleccionada //invocando al procedimiento almacenado this.ListaDtg.DataSource = BD.SPAutos(this.PorMarcaCmb.Text.Trim());

TECNOLOGÍAS DE LA INFORMACIÓN ÁREA

SISTEMAS INFORMÁTICOS

Desarrollo de Aplicaciones I

Ing. Alfonso Felipe Lima Cortés | Mtra. Verónica Gutiérrez Ocampo 100

//limpiar los datos del informe this.informe.vAutoBindingSource.DataSource = null; //cargar tambien la lista al informe this.informe.vAutoBindingSource.DataSource =

BD.SPAutos(this.PorMarcaCmb.Text.Trim()).ToList(); } } }

Los resultados del SP son pasados también al informe ya que los campos devueltos por la vista y

el sp son los mismos, de lo contrario se tendría un error.

Ahora solo nos falta programar el botón ImprimirBtn para que muestre el reporte.

privatevoid ImprimirBtn_Click(object sender, EventArgs e) { informe.ShowDialog(); }

Comprobando la funcionalidad.

Agregue nuevos registros, y pruebe con Imprimir seleccionando alguna marca o todas las marcas.

Img. 4.3.20.- Resultado final del informe.