Indice del Articulo
Como Crear Reportes En C# y SQL SERVER con reportviewer y Procedimientos almacenados
En este articulo aprenderemos sobre la creación de reportes usando parámetros, y un procedimiento almacenado creado en Sql Server con reportviewer en el lenguaje de programación C Sharp (C#). Anteriormente ya he subido un tutorial en mi canal de youtube donde explicaba la creación de reportes los puedes ver aquí, en ese tutorial mostraba los registros de una tabla creada en una base de datos de Sql Server, por lo tanto el objetivo de este articulo es aprender a filtrar datos previamente almacenados en la Base de Datos y mostrarlos en nuestro reporte. Los pasos a seguir serán los siguientes:
Base de Datos en SQL SERVER
1- Ya he creado una Base de Datos en Sql Server que contiene tres tablas: clientes, prodcutos y ventas, estas tablas tienen los campos que se muestran a continuación:
Como te habéis dado cuenta es una Base de Datos simple pues la finalidad es desarrollar el ejemplo de un reporte con datos guardados en la Base de Datos de Sql Server.
Procedimiento Almacenado en Sql Server para reporte
Para efectos de enviar un parámetro o filtrar los registros que deseamos que se muestren en nuestro reporte, lo que haremos sera crear un procedimiento almacenado en Sql Server, y que este nos devuelva las ventas registradas en una fecha especifica, el código del procedimiento almacenado sera el siguiente:
CREATE PROCEDURE Venta_Cliente
@Fecha Date
AS
BEGIN
select Clientes.Nombre, Clientes.Apellido, Productos.Nombre as Producto, Productos.Precio, Ventas.Fecha from Clientes inner join Ventas on Clientes.Id=Ventas.IdCliente inner join
Productos on Productos.CodProducto=Ventas.IdProducto where Ventas.Fecha =@Fecha
END
En el procedimiento almacenado el único parámetro que solicitara sera la fecha, para que nos muestre las ventas de la fecha indicada.
Formulario en Visual Studio
2. En Visual Studio lo que haremos sera crear un nuevo proyecto de Windows forms al cual le llamaremos EjemploReporte.
3. En el formulario que se nos crea por defecto agregamos un DateTimePicker para seleccionar la fecha y un botón para generar el reporte de la fecha especificada, el diseño del formulario sera el siguiente:
4. Lo siguiente que debemos hacer es agregar un nuevo formulario al proyecto de Visual Studio, y le nombraremos MostrarReporte, a dicho formulario le agregaremos un reportviewer, y lo acoplamos al contenedor primario que es una propiedad del reportviewer, habiendo hecho esto nos quedara como en la siguiente imagen:
Dataset en C#
5. A Continuación agregamos un Dataset a nuestro proyecto, y le nombraremos DatasetPrincipal, posteriormente creamos una nueva conexión y le agregamos al dataset el procedimiento almacenado creado anteriormente (Ver vídeo).
Nota: Es importante que tengamos en cuenta que este mismo Dataset puedes usarse para todos los reportes del proyecto, es decir que ahí puedes agregar la cantidad de procedimientos almacenados o tablas que tu necesitaras según la necesidad del proyecto.
6. Ahora debemos agregar un informe a nuestro proyecto y le llamaremos ReporteVentasFecha a dicho informe le insertaremos una tabla y le seleccionamos como origen de datos el DatasetPrincipal, y en la opción conjunto de datos seleccionamos el procedimiento almacenado (Venta_Cliente). Por ultimo asignamos los campos del procedimiento almacenado en la tabla (ver vídeo) y el resultado seria este:
7. El siguiente paso sera entrar al código código del formulario MostrarReporte, y agregaremos una propiedad la cual nos permitirá recibir la fecha (parámetro) que necesita el procedimiento almacenado para realizar la consulta en Sql Server.
8. Estamos a punto de finalizar nuestro ejemplo únicamente nos restaría asignarle al reportviewer el informe creado y pasar el parámetro fecha al informe.
Tutorial Reportes en C# y SQL Server
En el siguiente Tutorial se detalla todo el proceso para que sea comprensible y puedas aplicar a tu proyecto creado en C# con Sql Server:
Entradas Relacionadas:
muy buena explicación!! tengo una duda si en vez de poner la fecha en cada registro solo la quiero mostrarla arriba una sola vez por ejemplo abajo de informe de ventas poner "Fecha del periodo:(aquí poner fecha seleccionada)" si me pudieras ayudar de antemano muchas gracias!
excelente … me pregunto como hacer un reporte.. pero con dos procedimientos almacenados a la vez..
Excelente tutorial.. fue de gran ayuda, muchisimas gracias !!!
Excepción de HRESULT: 0x80131015e
el formulario se carga y muetra el informe pero al cerrar la aplicacion me aparece el siguiente error
Excepción de HRESULT: 0x80131015
Tengo un problema ! cuando selecciono mi procedimiento almacenado se me cierra la ventana y no la selecciona :C ayuda pls
y los videos???
Creo que se refiere a este vídeo: https://www.youtube.com/watch?v=NEhgxXVIdio
Excelente el video y el articulo.
Me podiras indicar como seria para un procedimiento almacenado que requiere 2 parametros.
Agracias
Donde puede descargar ReportViewer porque a mi no me parece D:
o como debo de instalarlo? como una libreria?
Puede ser que estés utilizando una versión de visual express
porque al momento de compilar me parece un mensaje que es no se controlo sqlexcepcion
no se controlo sqlException
Hola una pregunta que pasa si tengo varias ventas en esa misma fecha genra reporte de todas las ventas de ese dia? y si solo quiero 1 en especifico.
Gracias por la ayuda
como seria el procedimiento con reportes del crystal ??? muchas gracias
Este comentario ha sido eliminado por el autor.
hola, en tu caso podrias buscar la venta segun el numero de serie y numero de documento del comprobante de venta, ya q esta tiene una fecha asignada comun a las otras ventas y buscando por la serie y nro del documento, que es un nro unico para cada comprobante obtendrias lo q buscas