Luego de crear el reporte (ver el mini-tutorial Parte I, Parte II y Parte III) vamos agregar un parámetro al reporte y luego desde Visual Studio le pasamos el valor a ese parámetro.
1. Lo primero es revisar las partes del mini-tutorial y luego en el reporte creado en la parte II vamos abrirlo y nos dirigimos a la pestaña de Datos:
2. Modificamos el Query que allí creamos, agregándole una sentencia where para filtrar la información por el ContactID
Select ContactID, FirstName, LastName, EmailAddress, Phone from Person.Contact Where ContactID=@ContactID
3. Ejecutamos la consulta para probar y que a su vez Reporting Services genere este parámetro dentro del reporte.
4. Para visualizar el parámetro generado en el reporte solo basta con ir al menú Informe-> Parámetros del Informe este le mostrara un cuadro de dialogo como este:
En esta ventana podrán visualizar la lista de todos los parámetros agregados a la consulta y pueden asignarles propiedades especificas como que valores permite, si el campo será visible, si es el resultado que viene de otra consulta, etc, etc. Además si lo prefieren pueden agregar mas parámetros y luego se lo asocian a la consulta de la siguiente forma.
En la sección de datos verán tres puntos suspensivos “…” allí les aparecerá un cuadro de dialogo y se ubicaran en el tab de parámetros, en ese lugar le dirán a que parámetro le pasaran el valor agregado en el parámetro del informe.
Y ateniendo esto listo, le damos al proyecto o directamente al reporte botón derecho y seleccionamos la opción “Implementar o Deploy”.
Ahora desde Visual Studio exactamente en nuestro proyecto (me estoy basando en el proyecto creado en la parte III del mini-tutorial) escribiremos lo siguiente:
Al código mostrado en el articulo anterior le agregamos esto:
//Definimos los parámetros ReportParameter parametro = new ReportParameter(); parametro.Name = "ContactID"; parametro.Values.Add("2");//txtContactID.Text //Aquí le indicaremos si queremos que el parámetro //sea visible para el usuario o no parametro.Visible = false; //Crearemos un arreglo de parametros ReportParameter[] rp = { parametro }; //Ahora agregamos el parámetro en al reporte ReportViewer1.ServerReport.SetParameters(rp); ReportViewer1.ServerReport.Refresh();
y el código completo seria:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Microsoft.Reporting.WebForms; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Le indicamos al Control que la invocación del reporte será de modo remoto ReportViewer1.ProcessingMode = ProcessingMode.Remote; //Le indicamos la URL donde se encuentra hospedado Reporting Services ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://localhost/ReportServer"); //Le indicamos la carpeta y el Reporte que deseamos Ver ReportViewer1.ServerReport.ReportPath = "/DemoRS/Contacto"; //Definimos los parámetros ReportParameter parametro = new ReportParameter(); parametro.Name = "ContactID"; parametro.Values.Add("2");//txtContactID.Text //Aqui le indicaremos si queremos que el parámetro //sea visible para el usuario o no parametro.Visible = false; //Crearemos un arreglo de parámetros ReportParameter[] rp = { parametro }; //Ahora agregamos el parámetro en al reporte ReportViewer1.ServerReport.SetParameters(rp); ReportViewer1.ServerReport.Refresh(); } }
Este código aplica por si lo estas haciendo desde Visual Studio 2005, 2008 o 2010.
excelente aporte doctor, se agradece