Sie sind auf Seite 1von 7

Enviando parmetros al ReportViewer (Procesamiento local) ____________________________________________________________

La siguiente gua le ayudara a crear un query basado en una tabla o vista para posteriomente enviar parmetros y filtrar el resultado. Si considera que le hace falta informacin para entender mejor pude ir a la siguiente liga:
http://msdn.microsoft.com/en-us/library/microsoft.reporting.winforms.reportparameterinfo%28v=VS.90%29.aspx#Y114

Es necesario contar con la BD Linq03 y la base de datos para poder seguir este ejemplo. Pasos 1) Crear una nueva forma y agregar los elementos necesarios a ella. En este ejemplo vamos a mostrar el catlogo de libros y se van a filtrar por estado (activo e inactivo) y por precio.

2) Una vez colocados todos los elementos en la forma, siga el asistente para crear un nuevo reporte. Es necesario que en el asistente seleccione una vista o una tabla al parecer hay un bug con los procedimientos almacenados.Para efectos de este tutorial se utilizara la tabla de libros.

3) Cuando termina el asistente, se crea un archivo con extensin .xsden el solutionexplorer y si lo abrimos nos despliega la vista o tabla seleccionada. En esta

Enviando parmetros al ReportViewer (Procesamiento local) ____________________________________________________________


parte es donde vamos a indicar la condicin where para restringir los resultados del reporte de acuerdo a parmetros. Para modificar la consulta creada por default, tenemos que seleccionar el mtodo que est en la parte que dice TableAdapter. Para modificar es necesario hacer clic derecho y seleccionar configuresobre la opcin Fill, GetData().

4) Al finalizar el paso anterior se despliega una venta con una instruccin select es aqu donde indicamos el where y la condicin. Consulta original:
SELECT idLibro, Titulo, Autor, Precio, Activo FROM dbo.Libros

Consulta Modificada:
SELECT idLibro, Titulo, Autor, Precio, Activo FROM dbo.Libroswhere Activo = @activo and precio > @precio

Enviando parmetros al ReportViewer (Procesamiento local) ____________________________________________________________

Deseleccione la opcin Createmethodstosendupdatesdirectlytothedatabasey haga click en Finish 5) El siguiente paso es configurar el reporte para que reciba parmetros. Es importante abrir el archivo con extensin .rdly una vez en esa pantallavaya al men principal y

Enviando parmetros al ReportViewer (Procesamiento local) ____________________________________________________________


seleccione Report y sub opcin ReportParameters

En la siguiente pantalla es necesario agregar los parmetros que especificamos en el query anterior que son @activo y @precio. La nica diferencia es que en esta pantalla no se utiliza el arroba pero fuera de eso los nombres deben ser exactamente iguales. Utilice el botn de add y configure los parmetros necesarios y no olvide especificar su nombre, tipo de dato y mensaje (Name, Data type, Prompt)El tipo de dato tiene que ser del mismo tipo de dato de la tabla, para el caso de parmetros tipo money se utiliza float.

Enviando parmetros al ReportViewer (Procesamiento local) ____________________________________________________________

Enviando parmetros al ReportViewer (Procesamiento local) ____________________________________________________________

una vez indicados los parmetros haga clic en OK. 6) Finalmente lo nico que hay que hacer es enviarle valores a esos parmetros por medio de controles y se hace de la siguiente manera:

//declaracion de parametros y asignacion de valores ReportParameter p1 = newReportParameter("activo", checkBox1.Checked == true ? "true" : "false"); ReportParameter p2 = newReportParameter("precio", txtprecio.Text); //se agregan los parametros al reporte reportViewer1.LocalReport.SetParameters(newReportParameter[] { p1, p2 });

Enviando parmetros al ReportViewer (Procesamiento local) ____________________________________________________________


Posteriormente es necesario mandar llamar el mtodo encargado de refrescar el reporte
//se mandan los valores al table adapter utilizado para llenar el reporte this.LibrosTableAdapter.Fill(this.dsLibros.Libros, checkBox1.Checked, decimal.Parse(txtprecio.Text)); // se actualiza la informacion (refresh) this.reportViewer1.RefreshReport();

El codigo antes presentado se puede ejecutar en un boton o cuando carga la formaForm_Load. Una vez hecho esto el reporte funciona tomando en cuenta los parametros.

Como se puede apreciar en la pantalla, nicamente se estn mostrando los libros que estn activos y que adems su precio es mayor a 35. Los parmetros puede ser de cualquier tipo, en el caso de una fecha podramos sustituir un textbox por un calendar y la programacin es la misma solo cambia el tipo de dato del parmetro. Si le quedaron dudas puede descargar el archivo ExampleReports.rar que todos los archivos de la solucin.