30 mar 2013

Añadiendo un Reporte al Servidor de Reportes Manualmente

Vamos a añadir un reporte sencillo a nuestro servidor de Reportes de forma manual en un servidor de Reporting Servces 2008. La idea es crear un reporte de productos en inventario por bodega y subirlo de forma totalmente manual a nuestro servidor de reportes. Las tablas de donde se están tomando los datos ya están creadas en una base de datos de pruebas, con el fin de concentrarnos únicamente en la creación y subida del reporte.

Primero crearemos nuestro reporte; para esto utilizaremos Visual Studio 2008 que es en el que podemos trabajar los reportes para SQL Server 2008.

Primeramente creamos un nuevo proyecto tipo “Business Intelligence Projects” y dentro de este tipo elegimos la plantilla “Report Server Project

A continuación se nos mostrará la estructura generada para nuestra solución: una carpeta donde crear los reportes y otra donde crea los orígenes de datos (nuestras conexiones al backend de donde sacaremos los datos para nuestros reportes).

Primero creamos nuestra conexión a nuestra base de datos, hacemos clic derecho sobre la carpeta Shared Data Sources y en el menú auxiliar seleccionamos la opción Add New Data Source.

En la pantalla que se nos abre se nos permite editar las propiedades de nuestra conexión.

Elegimos un nombre adecuado para nuestro origen de datos y a continuación clic en “Edit…” para editar nuestro string de conexión.

Colocamos los datos que se nos solicitan, probamos la conexión para verificar que todo está en orden y le damos OK. Volvemos a la pantalla anterior donde vemos nuestro string de conexión ya formada y le damos OK.

Ya contamos con nuestro origen de datos disponible, ahora vamos a crear nuestro sencillo reporte de prueba. Primero hacemos clic derecho sobre la carpeta “Reports” y elegimos la opción “Add New Report” del menú emergente.

Se nos presentará una pantalla de inicio de un wizard en la que podremos ir construyendo nuestro reporte. Hacemos clic en next  en la pantalla de presentación del wizard. La siguiente pantalla que se nos mostrará es en la que podemos elegir o crear nuestro origen de datos.

Como ya lo teníamos creado de previo, simplemente le damos clic en Next. Pasamos a la pantalla, que es en la que diseñamos la consulta que vamos a realizar

Tenemos dos opciones: podemos escribir la consulta en el espacio “Query string” o podemos usar el botón “Query Builder…” para acceder a un diseñador gráfico de consultas.

La consulta que voy a utilizar extrae el id de la bodega, el nombre de la bodega, el id del producto, la descripción del producto y la cantidad en stock.

Independiente del camino elegido, una vez definida la consulta le damos clic en Next (primero en Ok si estamos en el query builder) para continuar con el proceso. Entramos en la etapa de diseñar la presentación de los datos de nuestro sencillo reporte. Primero Elegimos si nuestro reporte será tabular o matricial.

Yo lo voy a dejar Tabular y clic en Next. Seguidamente pasamos a la distribución de los campos en la tabla

Los campos que coloquemos en la sección Page quedaran como encabezado de página, los que coloquemos en Group formarán los agrupamientos y los que dejemos en Details, pues serán las componentes de las líneas del detalle del reporte. Así de esta manera, la distribución me quedó de la siguiente forma.

Nótese que agrupé por el Id de bodega pero deje fuera la descripción de la bodega. Esto es porque si los añado ahora en el group se me generan dos agrupaciones: una para el id de bodega y otro para la descripción de la bodega, y este no es el efecto que estoy buscando.

Hacemos clic en Next, lo que nos permite, en la siguiente pantalla escoger el “layout” de nuestro reporte así como si queremos incluir subtotales o añadir la característica de poder ocultar/mostrar los detalles por agrupamiento (drilldown).

Yo lo voy a dejar como esta por defecto y clic en Next. Ahora pasamos a elegir los aspectos de estilo de nuestro reporte.

Escogemos en el mejor nos parezca y hacemos clic en Next. Llegamos a la pantalla final. Elegimos un nombre apropiado para nuestro reporte y hacemos clic en Finish.

Hemos acabado con la definición y estilo de nuestro reporte, si le damos preview en este momento se nos mostrará algo como asi

Vamos a ajustarlo para que nos quede mejor. Primero nos devolvemos a la cejilla de diseño (Design)
Empecemos por cambiar en el encabezado, modificando la etiqueta rptInventario por “Inventario por Bodega”. Añadimos la descripción de la bodega a nuestro encabezado de grupo, para esto hacemos clic dentro de la segunda celda de nuestro encabezado de grupo y clic sobre el icono que aparece al lado derecho de la misma
Elegimos el campo que contiene la descripción de la bodega (desBodega). Como el espacio es pequeño para la descripción de la misma seleccionamos adicionalmente la celda contigua a la derecha,  hacemos clic derecho y seleccionamos “Merge Cells” del menú emergente. Acomodamos un poco el espacio procurando que los datos queden de la mejor manera. El resultado final sería algo como esto:

Ahora a subirlo al servidor de reportes.

Primero debemos acceder a nuestro servidor de reportes por medio del browser. En mi caso la dirección es http://foypc/Reports_FOYSERVER/Pages/Folder.aspx.

Añadimos una nueva carpeta donde poner nuestro reporte:

Una vez en nuestra nueva carpeta utilizamos el botón Upload file, para subir nuestro reporte

Creamos un nuevo origen de datos usando el botón “New Data Source”. Llenamos la información que se nos solicita:

Y hacemos clic en OK. Seguidamente hacemos clic sobre nuestro reporte. Nos parecerá una pantalla como la siguiente:

Hacemos clic en la pestaña Properties y luego en Data Sources del panel de la izquierda.


Hacemos clic en el botón Browse, para buscar nuestro datasourse recién creado:

Hacemos clic en OK y luego en Apply para dejar en firme nuestros cambios. Ahora finalmente damos clic en la pestaña View para ver que nuestro reporte ya es completamente funcional.

¡Listo! Con esto finalizo este pequeño tutorial.

Roy {aka. Foy}

Autor & Editor

Desarrallador y líder técnico, con experiencia en tecnologías Microsoft desde los tiempos del VB6 y el asp clásico hasta el .Net Core, pasando por COM+, javascript, angularjs, Ionic, xaml, cordova, MVC, Web Api, Sql Server, Oracle... . Ávido lector, apasionado programador.