Aunque para muchas personas les cueste creer, o ya se habían dado por vencidos al querer usar el SQL Reporting Server en Windows Presentation Foundation. Pues al respecto WPF no ofrece un control como el Report Viewer o Cruystal Report como control nativo de esta tecnología.
Pero para este proposito vamos a usarotro control, uno que a muchos les parecerá algo fuera de lugar. Nuestro control a usar es el
WebBrowser, disponible a partir de la versión del
.NET Framework 3.5 SP1. No se sorprendan, este control lo que nos permite es, como su homologo en las aplicaciones Desktop del framwork 2.0, navegar como algún otro browser de internet. Solo que ahora lo usaremos de una manera diferente.
Ahora pasaremos a la demostración.
Para ello les daré unos requisitos previos (si quieren poner en practica esta pequeña demostración o descargarla):
- SQL Reporting Server 2008
- Visual Studio 2008 (en cualquiera de sus versiones o C# express) con el SP1 instalado. Como recomendación al momento de abrir el IDE hacerlo como Administrador
- AdventureWorksLT2008, sino lo tienes puedes descargarlo en este enlace
Cumpliendo estos requisitos, lo siguiente a realizar será Abrir nuestro IDE y crear una solución en blanco, a la que llamaremos UsingReportingServerOnWpf.

Posteriormente pasamos a
Agregar > Nuevo ProyectoSeleccionamos
Proyectos de Business Intelligence al cual le daremos el nombre de
ReportProject
Una vez aceptado, nos mostrará un wizard, en el cual siguiendo los pasos configuraremos nuestro primer informe. para ello les ire mostrando la secuencia a seguir:










Terminando este wizard, le hacemos algunos ajustes visuales de acuerdo a sus gustos. Luego pasamos a implementar el proyecto. Click derecho sobre nuestro proyecto > Implementar
De esta manera las podremos ver en la página de Reporting Service


Una vez finalizado este proceso, pasaremos a crear nuestra aplicación en WPF para visualizar nuestro informe ya creado.
Para ello haremos click derecho sobre nuestra solución
> Agregar Nuevo Proyecto > Windows > Aplicación WPFLe daremos a este proyecto por nombre:
WpfViewReport
En el XAML pasamos a agregar el siguiente código dentro del Grid:
WebBrowser Name="ReportBrowser"/>y en el code-behind agregamos los siguientes fragmentos de código:
En el constructor:
this.Loaded+=
new RoutedEventHandler(Window1_Loaded);
En el Método Window1_Loaded
ReportBrowser.Source=
new Uri(http://localhost/ReportServer/Pages/ReportViewer.aspx?%2fSalesReport&rs:Command=Render,
UriKind.RelativeOrAbsolute));
Una vez realizado esto, ejecutamos nuestra aplicación y nos permitira visualizar nuestro reporte.

Es mus posible que antes de mostrar el reporte en el formulario, se solicite un logueo. Esto dependiendo de la configuración que se tenga en el Reporting Server.
Como vemos este es un reporte bastante senicllo. No hay mucha interacción con el usuario. Si queremos que nos muestre un reporte en base a parametros ingresados, tenemos dos opciones:
- La primera es dentro del query que tenemos al armar nuestro reporte declaramos los parametros, con lo que antes de mostrar el informe nos mostrará cajas de texto en las que se solicitan los parametros. Esto lo pide desde el propio informe.
- La otra opción es crear un informe y mandar un reporte desde programación (creando una aplicación web en la que se pidan los parametros y crear el reporte desde programación en javascript). Esto es más complejo pero a su vez mas completo. Ya que el WebBrowser nos permite ejecutar javascript, asi que podemos crear los parametros que querramos y crear un formulario en WPF en la que se pida el ingreso de los parametros de forma visual e interactiva (datepicker, combobox, etc). En un siguiente post presentaré esta versión de creación de un reporte en WPF.
Espero que este post haya sido de su agrado.
Saludos,
Juan Carlos