[Reporting Services] Llamar a un procedimiento almacenado desde SSRS
Hace unos cuantos días me preguntaban en el blog como pasar los parámetros de un procedimiento almacenado, cuando este es llamado desde Reporting Services. Bueno pues voy a explicar paso a paso, con un sencillo ejemplo como lo hice yo(seguro que hay otras formas
).
Lo primero es crear un procedimiento almacenado que nos traiga algunos datos.
El procedimiento que vemos en la imagen es muy sencillo, pero nos servirá para lo que queremos. Este tiene un parámetro(@ContactID) y nos devuelve todos los campos de la tabla Person.Contact de la base de datos AdventureWorks de SQL Server 2005.
Una vez creado el procedimiento, nos vamos a crear un nuevo informe. Los pasos a seguir son los de siempre.
Creamos el datasource(cadena de conexión al servidor de base de datos), en el tipo de comando ponemos text(si, podríamos poner StoreProcedure, pero eso lo explico otro día
). Luego llamamos al procedimiento tal como lo hacemos desde normalmente:
Como podéis ver, al poner @ContactID y ejecutar, el diseñador nos creará automáticamente un parámetro para el @ContactID.

Si necesitásemos más parámetros, al escribirlos en la parte de datos, el diseñador nos agregaría un parámetro por cada @Campo que encuentre.
¿Como sabemos que los parámetros creados van realmente a esos campos?, pues muy fácil, nos vamos a la edición del DataSource(o conjunto de datos) y nos situamos en la pestaña de parámetros, en ella vemos que @contactID está vinculado al parámetro suyo. Aquí podemos modificarlo nosotros mediante una expresión.

Ya tenemos creado nuestro acceso a los datos. Ahora para ver los campos que devuelve ese dataset, en la pestaña de datos del informe, pulsamos actualizar y listo, ya tenemos nuestros campos en la pestaña de conjunto de datos(normalmente a la izquierda del diseñador).
Ahora tan solo nos queda arrastar los campos a nuestra pestaña de diseño(el diseñar ya es para ustedes
) e ir a vista previa para ver como nos pide el parámetro.
Bueno, espero que os hay servido de utilidad.
Un Saludo
[cross-posting desde Geeks.ms]