Creación de Reportes – Impresión C# MVC

La idea del MVC es Modelo Vista Controlador, por lo que si se lo quiere llevar a lo que es reportería sería que no importa el Modelo ( para este ejemplo utilizaremos SQL Server 2008) , se puede utilizar cualquier controlador que en este caso es (C#) y la vista utilizaremos el formato que viene por defecto  en Visual Studio 2010 que es el RDLC.

Lo primero es que en C# se divide en Carpetas para poder separar la estructura MVC. Para este ejemplo se utilizará un reporte simple de un listado.

PASOS PARA CONSTRUIR UN REPORTE CON MVC

  1. Hacer el MODELO de la base de datos y crear una clase de tipo list del modelo:

modelo

 

En la imagen anterior se muestra Una clase TipoTarea quemuestra todos los campos y sus atributos y al final una clase TipoTareaList que es una lista de TipoTarea

  1. CONTROLADOR:

Se debe agregar la librería WebForms de Microsoft Reporting:

using Microsoft.Reporting.WebForms;

report

 

Se ha creado una acción llamada ReportPdf () se explicará cada línea:

  1. Donde se debe guardar en una variable el sitio donde se encuentra el reporte que normalmente va en la vista.
  2. Se genera un objeto de tipo TipoTareaModel que tiene todas las acciones que me permitirá devolver un objeto que guarda la información a mostrar.
    1. En este caso TipoTareaModel, me permite Crear un nuevo registro, Modificar, Eliminar, Buscar y Eliminar (CRUD).
    2. Declaramos este objeto para tener estas acciones disponibles y cargar en otro objeto lo que mandemos a buscar que es la única acción que utilizo aquí.
    3. Declaro el objeto obj para enviar una búsqueda con parámetros, en este caso no son parámetros dinámicos sino fijos por la prueba.
    4. La declaración de variables siguientes me sirve para hacer filtros de la información que voy a mostrar. Es decir si colocar obj.cod = “1” me mostraría solo la información donde el códigos sea 1.
    5. Declaro una Objeto Model que va almacenar el objeto resultante de la búsqueda dado los parámetros enviados.
    6. Luego envío a la función RenderReport ( La ruta donde se encuentra el archivo, el formato a enviar como reporte en este caso PDF, y el objeto que imprimiría)
    7. Finalmente retorna la vista

El RenderReport tiene este código

render

 

Donde recibe de parámetros el path donde se encuentra el reporte, el tipo de reporte a enviar y el objeto que va a mostrar.

No hay mucho que comentar aquí solo dos cosas

var reportDataSource = new ReportDataSource(«TipoTarea», Model);

 

Esta línea hay que colocar el nombre del tipo de modelo que se enviaría, por lo que también se puede enviar como parámetros para que esta función sea mucho más genérica.

Y una línea que yo comenté porque sino me enviaba a descargar el archivo como pdf y no me lo mostraba.

//Response.AddHeader(«content-disposition», «attachment; filename=foo.» + fileNameExtension);

 

 

  1. VISTA

Finalmente la vista ..

 

Antes de explicar la vista quisiera mostrar algo que fue difícil encontrar el truco:

  1. Si se ven el gráfico siguiente existe el archivo Report1.rdlc que está dentro del Path que definimos en el controlador.
  2. Existe un archivo llamado ViewPage1.aspx que es necesario para ver el dataset al momento de escoger. No se si es por error del visual studio pero es necesario tener este archivo para ver el dataset en al momento de generar el proyecto.

 

explorador

Finalmente para ver realizar el reporte:

  1. Se agrega el reporte (INFORME), se lo coloca en la ruta que se colocó en el controlador.
  2. Se agrega un nuevo Data Set o conjunto de datos y listo se tiene el modelo de datos listo para ser utilizado.

rdcl

 

No es parte de este pequeño manual el uso de las diferentes formas de mostrar la información, ni como utilizar cabeceras y detalle.

 

Referencias:

http://mvcrdlc.codeplex.com/

Deja un comentario