Creación de Reportes con Crystal Report con Visual Studio 2010 en Windows Form.


 

En esta ocasión crearemos un reporte en Windows Form con Crystal Report en Visual Studio 2010 y Net Framework 4. Como vimos en la entrada de instalación de Crystal Report para VS 2010, tenemos que instalar CR for VS 2010, aunque también podemos usar Visual Studio 2005 y 2008 sin instalar nada ya que por defecto CR está en estas ediciones. Código Fuente aquí

Para este ejemplo usaremos la base de datos Northwind en las tablas Productos y Categorías.

El reporte mostrara los productos agrupados por categoría además de un gráfico en forma de torta o circulo para mostrar cuantos productos existen por categoría.

image

Materiales

1.       Base de Datos Northwind

2.       Visual Studio 2010

3.       Crystal Report para Visual Studio 2010

4.       Sql Server 2008 Express o superior

Para realizar un reporte con Crystal Report tenemos muchas formas, usando clases, directamente con la base de datos usando tablas o vistas y usando DataSet tipados. Esta será la forma que usaremos para generar el reporte.

Materiales

1.       Base de Datos Northwind

2.       Visual Studio 2010

3.       Crystal Report para Visual Studio 2010

4.       Sql Server 2008 Express o superior

Para realizar un reporte con Crystal Report tenemos muchas formas, usando clases, directamente con la base de datos usando tablas o vistas y usando DataSet tipados. Esta será la forma que usaremos para generar el reporte.

Creamos un nuevo Proyecto de Windows form con Net 4.0

Por defecto VS 2010 ejecuta el proyecto con Net Framework 4 Client Profile, esto se debe a que el Framework es muy grande y muchas veces no usamos todo el potencial asi que podemos recurrir al Net Framework 4 Client Profile ya que este es una versión reducida del .Net Framework 4 y por ende más fácil de trasportar y de instalar ya que no usa todas la librerías y nuestra aplicación puede ser más liviana para la instalación.

Pero si queremos usar Crystal Report no podemos usar la versión Reducida de .Net Framework 4 asi que nos vamos al MenúàProyectoàPropiedades del Proyecto. Y cambiamos de Motor de Ejecución a .Net Framework 4, Para poder usar CR for VS 2010

image

Creando el Data Set

Crearemos el data set a partir de la base de datos. Para poder realizar esto primero vamos a Explorador de Servidores en cual es muy útil para manejar un servidor de base de datos en este caso SQL SERVER 2008.

Para poder visualizar el explorador de servidores en el Menú VeràExplorador de Servidores o (Ctrl+Alt+S).

Luego presionamos conectar con base de datos y conectamos con la base de datos Northwind

image

Una vez conectada la base de datos podemos ver las tablas que esta BD contiene.

image

Ahora agregamos un Data Set a nuestro proyecto.

image

Colocamos el nombre de dsProductoPorCategoria.xsd. Arrastramos la tabla para que el reporte pueda usarlo como fuente de datos.

image

La relación se construirá automáticamente con esta estructura definida el reporte podrá tomar los datos y ordenarlos de forma que podamos agrupar los productos por categorías.

Creamos el Reporte

Para crear el reportes usaremos el asistente el cual nos permitirá elegir entre varias opciones la más adecuada para nuestro reporte.

Agregamos el reporte de Crystal Report

image

 

Cuando agregamos el reporte usaremos el asistente de informe para ayudarnos en la configuración del reporte.

image

Elegimos la conexión del reporte del cual tomara la estructura para definir el informe, para este paso solo tenemos que elegir el data set tipado que construimos anteriormente

image

Vemos la tablas relacionadas y damos siguiente

image

Seleccionamos los campos a mostrar esto es importante ya que si elegimos muchos campos nuestro informe se verá mu llenos y eso puede provocar que el informe no sea tan legible, así que solo tenemos que usar los campos que realmente necesitemos.

image

Ahora podemos agrupar los datos del informe esto es opcional pero como deseamos tener un informe que muestre los productos por categoría debemos agrupar los datos por la categoría.

image

Luego también podemos insertar a nuestro informe campos de resúmenes (opcional). En estos campos de resumen, indicaremos que calcule el promedio de precios de una categoría y la sumatoria del stock de los productos de esa categoría.

image

En esta sección podemos ordenar por los grupos superiores o inferiores pero por defecto elegimos ninguno.

image

Agregamos el grafico al reporte (grafico circular o de torta)

image

Si deseamos realizar una sub agrupación podemos seleccionar en esta ventana pero para nuestro caso es innecesario.

image

Finalmente nuestro informe está concluido.

image

Si requerimos colocar el informe al último del informe podemos hacerlo con solo arrastra el grafico a la parte inferior de la sección pie de informe (Section 4).

Pero nuestro trabajo no termina ahí tenemos que agregar un visor del reporte al formulario Windows Form.

image

Poblar el Reporte

Ahora que tenemos definida la estructura y tenemos el visor de informe. Esto no significa que el reporte esté listo ya que el reporte por si solo aun no está lleno, si bien usamos el data set para definir la estructura del reporte este dataset no está lleno. Ahora toca llenar el data set con los datos de la base de datos.

Creamos el método PoblarReporte el cual llena el data set con las sentencias SQL que se requieran, como tenemos que llenar dos tablas usaremos dos distintos DataAdpters.

2011-04-15 01h35_08

Ahora llamamos este método en el evento Load del formulario.

image

Finalmente ejecutamos el reporte y vemos como nuestro reporte se generado con éxito.

image

Nota Importante para la ejecución en VS 2010.

Cuando creamos de esta manera el reporte en VS 2010 tendría que agregar automáticamente las librerías necesarias, además configurar el App.Config de manera que la ejecución resulte exitosa. Pero por alguna razón en algunos  VS 2010 no configura de manera correcta el App.config y nuestro reporte no se ejecuta, en otros no existe el problema. Estuve probando en diferentes VS 2010 sobre todo ultimate pero me sale un error, en otros no y todo es normal, tal vez sea porque algunos PC eran de X64 y otros de X32 pero, no hay problema si tenemos este error de ejecución el cual indica que no podemos compilar porque no se reconoce las librerías de CR.

image

Para que se ejecute de manera correcta solo tenemos que configurar el App.Config, agregando esta línea.

<startupuseLegacyV2RuntimeActivationPolicy=true>

<supportedRuntimeversion=v4.0/>

</startup>

 

 Y comentando  la línea

<!–<startup><supportedRuntime version=”v4.0″ sku=”.NETFramework,Version=v4.0″/></startup>–>

 

Quedando el App.config como sigue:

image

Con esto ya se ejecuta nuestro reporte.

Código Fuente

El código fuente del proyecto con PDF del Articulo mas la base de datos aquí

Leer-->  Conexiones .Net Con Access 2007 o 2010

Have any Question or Comment?

7 comments on “Creación de Reportes con Crystal Report con Visual Studio 2010 en Windows Form.

ISRAEL

MUCHAS GRACIAS

ME SALVASTES LA VIDA

SIGUE ASI

SALUDOS.

Reply
dany

También tuve ese problema, pero ahora tengo otro que no carga el reporte, o sea que no me muestra los datos en el reporte solamente me muestra los títulos pero no los valores, antes que nada quiero explicar además que la conexion que utilizo “objetoConeccion” que se encuentra en el modulo, mi codigo es el siguiente

Private Sub BtnMostrarReporte_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnMostrarReporte.Click

Dim dsPc As New EstadoCuentaDataSet()
Dim sqlDaPrestamos As SqlDataAdapter
Dim sqlDaHistoCuotas As SqlDataAdapter
Dim sqlDaEmpleados As SqlDataAdapter

”Try
Dim sqlCommPrestamos As New SqlCommand(“SELECT Codigo_Prestamo,Codigo_Empleado ” & _
“FROM Prestamos ” & _
“WHERE Codigo_Prestamo = @codPrest and Estado = 1”, objetoConeccion)
sqlCommPrestamos.Parameters.AddWithValue(“@codPrest”, TextBox1.Text)
Dim sqlCommEmpleados As New SqlCommand(“SELECT Em.Codigo_Empleado, Em.Nombre_Empleado,Codigo_Usuario,Codigo_Unidad,Codigo_Aval ” & _
“FROM Empleados Em INNER JOIN Prestamos P ” & _
“ON Em.Codigo_Empleado = P.Codigo_Empleado ” & _
“WHERE P.Codigo_Prestamo = @codPrest AND P.Estado = 1 “, objetoConeccion)
sqlCommEmpleados.Parameters.AddWithValue(“@codPrest”, TextBox1.Text)

Dim sqlCommHistoCuotas As New SqlCommand(“SELECT C.Codigo_Prestamo,N_Cuota , Valor_cuota , C.Fecha_pago,C.Estado ” & _
“FROM Prestamos P INNER JOIN Historico_Cuotas C ” & _
“ON P.Codigo_Prestamo = C.Codigo_Prestamo ” & _
“WHERE P.Codigo_Prestamo = @codPrest AND C.Estado = 2 AND P.Estado = 1 “, objetoConeccion)
sqlCommHistoCuotas.Parameters.AddWithValue(“@codPrest”, TextBox1.Text)

‘Crear los DataAdapters
sqlDaPrestamos = New SqlDataAdapter(sqlCommPrestamos)
sqlDaHistoCuotas = New SqlDataAdapter(sqlCommHistoCuotas)
sqlDaEmpleados = New SqlDataAdapter(sqlCommEmpleados)

‘Poblar las tablas del dataset desde los dataAdaperts
sqlDaPrestamos.Fill(dsPc, “Prestamos”)
sqlDaEmpleados.Fill(dsPc, “Empleados”)
sqlDaHistoCuotas.Fill(dsPc, “Historico_Cuotas”)

Dim rpt As New rptEstadoCuenta()

rpt.SetDataSource(dsPc)
crvEstadoCuenta.ReportSource = rpt

End Sub

Reply
dany

Una aclaracion estoy usando vb.net 2010 y sql server 2005, por favor me gustaria que me dijeran cual es el error en el código

Reply
Marcos Montoya

Estimado, no lo he intentado, pero se mira prometedor

Reply
Stephani

Simplemente lo mejor muchas gracias por este post me sirvio de mucho de verdad muuuuucho, después de tantas horas de andar buscando me tope con tu ayuda jejejeje mil gracias y sigue asi 😛

Reply
kelly

ummm fue bueno aunque tuve muchos errores

Reply
Emmanuel

para windows 8 + sql server 2008 + vs 2010 corriendo sobre una x64 cual seria la configuracion del app.config

Reply

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Newsletter

Publicidad

error: Content is protected !!