ReportViewer un gran desconocido 

Tags: .NET, Arquitectura, Proyectos

¿Cómo construirías un Report sobre .NET sin coste adicional de licencias?, si has contestado "con ReportViewer" la muñeca chochona para tí.

Como algunos compis no tienen claro como funciona os he preparado un ejemplo para que podáis seguir la siguiente explicación.

En el ejemplo encontraréis dos páginas:

  • Default.aspx : Con un control ReportViewer.
  • WebForm1.aspx : Que genera el report en background y lo devuelve directamente. Muy útil cuando no queremos que se muestre por pantalla.

 

ReportViewer

ReportViewer consiste en un control que nos permite generar reports de forma rápida y sencilla.

Existe un cliente para ASP.NET y aplicaciones WinForm.

Entre sus principales ventajas encontramos:

  • Manejo en tiempo de diseño
  • Dispone de una gran cantidad de expresiones para realizar distintos cálculos sobre el report
  • Permite una previsualización del report.
  • Permite exportar a PDF sin tirar líneas adicionales
  • Permite exportar a Excel sin tirar líneas adicionales

 

image

 

ReportViewer realmente es un control de usuario que maneja por debajo la clase "LocalReport", la cual es la que hace todo el trabajo duro de pasar de una definición y un origen de datos a un report renderizado.

Para utilizar ReportViewer agregaremos las referencias "Microsoft.ReportViewer.WebForms.dll" o "Microsoft.ReportViewer.WinForms" según corresponda.

A continuación podremos arrastrar el control "MicrosoftReportingViewer" alojado en la sección "Reporting" de la barra de herramientas.

image

Una vez agregado podremos o bien asociarlo a un report existente o crear uno nuevo.

image

Para diseñar los reports disponemos de una herramienta gráfica en VisualStudio. Este asistente maneja por debajo un xml alojado sobre ficheros ".rdlc".

Agregaremos un nuevo report con extensión ".rdlc", y se nos abrirá una pantalla similar a la siguiente:

image

Disponemos de varios controles para poder añadir sobre nuestro report.  Los más importantes son el "TextBox" y  el "Table", a los que podemos establecer su propiedad "Value" con una expression que recoja o calcule el texto a mostrar sobre la etiqueta.

image

Podremos utilizar como orígenes de datos tablas y clases. Aunque no he conseguido que me funcione bien con clases mías en tiempo de ejecución.

Disponemos además la posibilidad de definir nuestras cabeceras y piés de página. Lo malo es que los valores que vayan en estas secciones tendrán que ser constantes, parámetros o valores alojados en otros controles del report.

image

En el ejemplo os muestro como pasar parámetros y mostrar el número de páginas.

Si podéis jugar un poco con las expresiones disponibles vereis que se pueden hacer muchas cosas.

 

Al menos con la versión del Framework 2.0 ReportViewer no se instala por defecto, por lo que tendremos que agregar de forma manual en el GAC las dll's alojadas en la carpeta de visual studio "ReportViewer". Lo bueno es que no tenemos que instalar ni el Office ni el Adobe!!!!.

A algunos os sonará este control, existe uno similar para SqlReportingServices, de echo ReportViewer puede renderizar los reports alojados en un ReportingServices.

 

Saludos al comando Höna!!!!

 

Si te ha servido ponme un comentario anda.

 
Publicado por Mario Cortes Flores en 22-Oct-08
1 Comentarios  |  Trackback Url  |  Enlaces a este post |        
 
Failed to render control: Value does not fall within the expected range.

Comentarios


Manuel comentado en Thursday, 23-Oct-2008
Esta bueno pero con firefox anda muy lento , sabes si existe algún fix , para el tema del scroll cuando el reporte es muy largo ?

Nombre:
URL:
Email:
Comentarios:
CAPTCHA Image Validation