En esta entrada les muestro los pasos para crear un reporte
con parámetros y cómo pasarlos de los TextBox del formulario a Report
Viewer, utilizando Visual Studio 2015 y SQL Server 2012.
Esta es la forma más cómoda y
sencilla que he descubierto para trabajar con parámetros y espero que les pueda
ser útil.
Para este ejemplo deberás crear una tabla llamada Ventas con la siguiente estructura e
información:
A partir de esta tabla genera un procedimiento almacenado
(SP) llamado reporteventas, el cual
será el encargado de recibir los parámetros de tipo fecha y recopilar la
información que deseamos plasmar en el reporte.
Observa que he creado dos variables de tipo Date
(FechaInicial y FechaFinal) las cuales, al ejecutar el SP harán referencia al
campo Fecha de la tabla Ventas.
Es importante que te asegures de que el SP funciona:
Ahora pasemos a nuestro proyecto en Visual Studio.
Tengo creado un formulario con los siguientes controles:
Dos label, dos DateTimePicker y un botón desde el cual se
imprimirá el reporte.
El siguiente paso será agregar el diseñador de reporte de
Report Viewer. Para ello, agrega un nuevo ítem al proyecto y da clic en
Reporting/Report y asígnale un nombre, para este ejemplo lo he llamado DiseñoReporte.
Nota: Si no te aparece la presente opción es necesario que
corras el ejecutable de Visual Studio e instales DataTools.
Posteriormente se mostrará el diseñador de reportes de
Report Viewer.
El primer paso es configurar un origen de datos, es decir,
indicarle desde qué instancia, base de datos y tabla (En nuestro caso SP)
deberá traer la información.
Da clic derecho sobre Datasets/Add Dataset, si el diseñador
detecta que aún no tienes configurado un origen de datos (Como en este ejemplo)
solicitará que configures uno.
Se mostrará la siguiente ventana donde hay que seleccionar
el origen de datos, en este caso es DataBase/Next.
En el siguiente apartado indica el nombre de la instancia de
SQL/ credenciales de autenticación por SQL, así como el nombre de la base de
datos de la cual se consultará la información.
Selecciona la base de datos:
Luego se mostrará la estructura de la base de datos
seleccionada (Tablas, Vistas, SP, Funciones).
Selecciona Stored Procedures/y
marca el SP creado inicialmente. Por último es necesario asignar un nombre al origen de datos.
Si has seguido los pasos hasta aquí, tendrás una vista del
origen de datos. Para este ejemplo el SP
y los respectivos campos que lo conforman.
De lado izquierdo se mostrará esta misma información para
poder utilizarla en el diseñador del reporte.
El siguiente paso, es comenzar a dar forma al reporte que se
presentará.
Agrega los parámetros (Parameters/Add Parameter) que en este
caso serán la fecha inicial y fecha final y asígnales un nombre.
Una vez capturados los parámetros, selecciónalos y
arrástralos hasta el diseño del nuevo reporte como se muestra en la imagen.
Agrega una tabla al diseño del reporte que es donde se
mostrarán los datos que contiene el DataSet.
Una vez que se agrega posiciónate sobre el lado derecho de
cada celda para seleccionar el campo que deseas se muestre en cada espacio,
como se muestra en la imagen.
Si lo prefieres también puedes agregar una fila para mostrar
totales de las columnas.
Una vez que el diseño del reporte esté listo, pasemos al
formulario desde el cual se capturarán los parámetros y se mostrará la
información del reporte.
En el formulario es necesario agregar un elemento de tipo
ReportViewer. Una vez agregado, en la esquina superior derecha deberás
seleccionar el formato de reporte (.rdlc) que se creó anteriormente.
Una vez seleccionado el reporte, es importante verificar que
en la parte inferior del formulario se agreguen automáticamente el DataSet,
BindingSource y el TableAdapter con el nombre del SP.
Ahora pasemos al código del formulario. Observarás que de
forma automática se agregaron dos líneas de código en el evento load del mismo.
Es necesario pasarlas al evento click del botón.
La primer línea es la encargada de recibir los parámetros y
pasárselos al DataSet para que éste se encargue de traer la información que
ocupamos visualizar. Inicialmente marca un error en Fill, esto se debe a que aún no le hemos indicado de qué campos
deberá tomar los valores de los parámetros que ocupa el SP.
El código, ya con campos de parámetros incluidos deberá
quedar de la siguiente forma:
Entre las dos líneas de código anteriores he codificado la
forma como se deberá pasar el rango de fecha, proveniente del DateTimePicker, a
Report Viewer.
Observa que he indicado el número de parámetros que se
pasarán, en este caso son dos y por eso he puesto 1(El conteo comienza desde
cero). En la línea siguiente se manda llamar el nombre textual de cada
parámetro que se definió anteriormente en el diseño del reporte y se asocia con
el campo del cual tomará su valor.
Es importante mencionar que en el formulario donde se
cargará la información deberás agregar la siguiente referencia, de lo contrario
marcará un error en Parameters:
Imports Microsoft.Reporting.WinForms
Una vez hecho lo anterior solo queda ejecutar el desarrollo
y deberás obtener algo muy parecido a lo que se muestra en la siguiente imagen
donde el rango de fechas capturado en los DateTimePicker se visualizan
también en el reporte:
Ahora solo queda que adaptes el código a tu desarrollo y
listo.
¡Hasta la próxima!
Ing. Guadalupe López
"Ningún conocimiento es válido sino se comparte"
Muy buen aporte estimada Guadalupe.
ResponderBorrarhola me podrias ayudar a crear un procedimiento en donde tenga que juntar informacion de diferentes tablas para generar un acuse
ResponderBorrarhola tienes idea de porque al agregar parámetros en mi reporte este pierde el relacionamiento de datos con el data set al momento de cargar el informe. Es mas en la opción Choose data source al momento da agregar un parámetro queda en blanco.
ResponderBorrarLo mas raro de todo es que yo venia usando los reportes hace un buen tiempo y nunca tube problemas pero ahora me pasa esto y no lo estoy pudiendo solucionar. Si llegas a tener alguna información o respondes por acá te agradecería que me lo indiques a mi correo que es diegobonini4161@gmail.com.
ResponderBorrarGracias
tenia tiempo buscando esta información y cuando la encuentro es de web y estoy haciendo la tarea en c#
ResponderBorrarExcelene Post, gracias por el aporte.
ResponderBorrarMuy buen aporte Ingeniero, felicidades y continúe así...
ResponderBorrarGracias.
BorrarHola,
ResponderBorrarRequiero una asesoría personalizada, cómo nos podemos contactar.
Gracias.
Saludos,
Javier
Hola Javier, gracias por visitar mi blog. Este es mi correo: datazarblog@gmail.com A tus órdenes. Saludos.
BorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarHola Tony, respondí a tu pregunta en el correo que me mandaste. Lo que tú ocupas es diferente al uso de parámetros que explico en esta entrada. Saludos.
Borrar