Tutorial: Crystal Reports C# Básico


Crystal

Pasos BASICOS para hacer tu PRIMER Crystal Report.

Pues bien, veamos cuales son los pasos básicos para generar nuestro primer reporte de Crystal Reports. Para este ejemplos los datos a utilizar en el reporte son escritos manualmente, pero la idea es solo poner datos en la tabla, para una aplicación mas real, no importa si los datos lo obtienes de capturas de usuario o de alguna base de datos. En la segunda versión de este tutorial, profundizaremos un poco mas en esos aspectos.

  • Lo primero que debemos hacer es agregar a nuestro proyecto un DATASET con el nombre de Datos.

Picture 3

  • Después de agregar el nuevo elemento, automáticamente seremos direccionados al “editor” de Datasets, de la parte izq arrastramos una DataTable y le cambiamos el nombre a Tabla.
  • Posteriormente presionamos botón derecho sobre la tabla y seleccionamos Add >> Column. Agregamos 3 columas de tal forma que nuestra tabla quede asi:

Picture 4

Pues bien, ya tenemos nuestro Dataset y nuestra tabla que tendrá los datos para nuestro reporte, ahora crearemos el reporte.

  • Agreguemos nuevamente un nuevo elemento a nuestro proyecto, pero esta vez será un CrystalReport, y demosle el nombre de Reporte (haciendo un alarde de originalidad en el nombre :D)Picture 5
  • Nos aparecerá un pequeño menu, seleccionemos OK, y en la siguiente ventana presionemos Finish. Esto debido a que no queremos ayuda para elegir los datos a mostrar. Para fines educativos, lo haremos “Como los hombres” (manualmente).
  • Ahora estamos en el “Diseñador de Reportes”, en la parte izq, presionamos botón derecho sobre Database Fields y seleccionamos Database Expert…Picture 8
  • Del nuevo menu, expandemos Project Data >> ADO.NET DataSets y seleccionamos nuestra Tabla y la agregamos a la lista de Selectes Tables, para esto presionamos el botón con el simbolo “>“.

Picture 9Al final tendremos algo asi:

Picture 10

  • Presionamos OK. Ahora bajo DataBase Fields podremos ver las columnas que creamos para nuestra Tabla.
  • Ahora solo tenemos que arrastrar cada una de las columnas hacia la Sección 3 (Details) que para fines prácticos, es donde se mostrará el cuerpo de nuestro reporte.
  • Agregamos a nuestro proyecto un nuevo Windows Forms y le damos el nombre de VerReporte
  • Al nuevo VerReporte le agregamos un componente CrystalReportViewier

Picture 2

Pasemos al Código.

  • Agregamos el botón desde el cual generaremos nuestro reporte.
  • En el evento del botón (doble clic sobre el nuevo botón) agregaremos el siguiente codigo
// Crear Objeto de Dataset
     Datos DS = new Datos();

// Crear Objeto del visor de reportes
     VerReporte VER;

//Agregar Datos a la(s) tabla(s) que nos interesa(n) del dataset

// En este caso llenare datos manualmente (SOLO PARA EJEMPLIFICAR)
     DS.Tabla.Rows.Add("Sergio", "sergio@example.com", "123 44 55");
     DS.Tabla.Rows.Add("Alberto", "Alberto@example.com", "123 44 55");
     DS.Tabla.Rows.Add("Inzunza", "Inznuza@example.com", "123 44 55");

 // Inicializar el visor de reportes y mandarle la tabla con los datos
      VER = new VerReporte(DS.Tabla);
      VER.ShowDialog();
  • Finalmente, modificamos el codigo del constructor de la forma VerReporte para que se vea de la siguiente manera:
public VerReporte(DataTable DT)
{
  InitializeComponent();

  //Crear Objeto REPORTE
    Reporte RP = new Reporte();

  //Asignar datos al reporte
    RP.SetDataSource(DT);

  //Asignar reporte creado al visor de reportes
   this.crystalReportViewer1.ReportSource = RP;
  }


Por fin,  ya todo esta listo para ejecutar nuestro código, presionar el botón y ver nuestro reporte de Crystal Reports.

Fin

Bajar el Proyecto para VS 2008


Nota: Este sitio ya no tendra Actualizaciones de Post, para nuevos tutoriales dirigirse a http://elsotano.net/blog

About these ads

32 thoughts on “Tutorial: Crystal Reports C# Básico

  1. Muy buen tutorial =D. Espero que sigas subiendo mas tutoriales hacerca de Crystal Reports, tambien sobre como meter parametros a los reportes y tambien como hacer graficas.

  2. Pingback: How To: Crystal Reports C# Auto-Agrupación de Datos « Sergio Inzunza

  3. Hola, quiero felicitar al autor de este tutorial, de verdad es muy bueno, excelente diria yo, bien pulcro y claro, y con el proyecto de demo no quedo ninguna duda al respecto, mas sin embargo me gustaria saber como seria un reporte con parametros?, como haria para q en el reporte se visualicen los parametros de filtro que generaron un reporte…

    saludos,

    • Hola Ing. Gabriel
      Muchas gracias por tu comentario.
      Y lo de los parametros, ya otras personas me lo han preguntado.
      Pronto sacara la continuación para agregar esa parte.

      Pasate por aquí en unos días y lo veras.

  4. Disculpaa que te moleste… pero, puedes pasarme tu ejemplo, no lo puedo descargar…. no me sale y quiero guiarme de el… exelente trabajo

    • Hola. yo tambien quiero el proyecto. Quiero saber como agregas las consultas SQL a los reportes. Por favor me lo pueden pasar que tengo que implementar un Proyecto C#, Crystal Report 2008 y MySQl muchisisisimas Gracias por la ayuda

  5. Hola no se si es por la version pero en .Net 2008 me aparece un error al ejecutar el programa en esta linea de codigo: Application.Run(new VerReporte());

  6. Muchisisisisisisisisimas Gracias me hiciste un parononoonononoononon Bien Grande viejo, muchos Thanks. Saludos desde Culiacan, Sinaloa, Mexico !!

  7. hola, seria mucha molestia que me dieras una idea de como generar una factura y ponerla un un libro diario?, o sea, generar el libro diario??….tengo que rendir final para recibirme pero no nos enseñan ni el lenguaje ni la materia, me estoy volviendo loca!!!, quiero recibirme, tengo que ahcer un programa que genere factura A,B,Y,C, y libro diario y mayor, tambir iva compras e iva ventas y ensima no se nada de economia, tambien estoy tratando de aprender esa partes, en lo que me puedas ayudar, muchas gracias.
    saludos

  8. Buenas, Tengo un problema al realizar la impresion de mi reporte, siempre me pide los parametros del reporte y adicionalmente me pide le usuario y la contraseña del servidor. (Mi aplicacion es en Visual Basic 2010 con SQL Server 2008 y Crystal reports para Visual Studio 2010).
    Este es mi codigo fuente del boton Imprimir.

    Dim sdaReporte As New SqlDataAdapter
    Dim dsReporte As New DataSet
    Dim cr As New RptPagosEncabezado

    sdaReporte.SelectCommand = New SqlCommand(“PRptSeguimientoPagos_Encabezado”, Cnn)
    sdaReporte.SelectCommand.CommandType = CommandType.StoredProcedure
    sdaReporte.SelectCommand.Parameters.Add(“@Id_Empresa”, SqlDbType.Int).Value = Id_Empresa
    sdaReporte.SelectCommand.Parameters.Add(“@Id_SeguimientoVentas”, SqlDbType.Int).Value = Id_Seguimiento
    sdaReporte.SelectCommand.Parameters.Add(“@Id_SeguimientoVentasProforma”, SqlDbType.Int).Value = Id_SeguimientoProforma
    sdaReporte.SelectCommand.Parameters.Add(“@Id_SeguimientoVentasFactura”, SqlDbType.Int).Value = Id_SeguimientoFactura
    sdaReporte.SelectCommand.Parameters.Add(“@Id_SeguimientoVentasPagos”, SqlDbType.Int).Value = Id_SeguimientoPago
    Cnn.Open()
    sdaReporte.Fill(dsReporte)
    Cnn.Close()

    ‘ cr.ParameterFields.Clear()

    cr.SetParameterValue(0, Id_Empresa)
    cr.SetParameterValue(1, Id_Seguimiento)
    cr.SetParameterValue(2, Id_SeguimientoProforma)
    cr.SetParameterValue(3, Id_SeguimientoFactura)
    cr.SetParameterValue(4, Id_SeguimientoPago)

    cr.SetDataSource(dsReporte)
    FrmReporte.Visor.ReportSource() = cr

    FrmReporte.Text = “Seguimiento de Control de Pagos”
    FrmReporte.WindowState = FormWindowState.Maximized
    FrmReporte.Show()
    FrmReporte.Refresh()

    • Simplemente cambia el orden en que asignas los parametros y los datos.
      primero los datos y depues los parametros.

      cr.SetDataSource(dsReporte)
      cr.SetParameterValue(0, Id_Empresa)
      cr.SetParameterValue(1, Id_Seguimiento)
      cr.SetParameterValue(2, Id_SeguimientoProforma)
      cr.SetParameterValue(3, Id_SeguimientoFactura)
      cr.SetParameterValue(4, Id_SeguimientoPago)

  9. Buenas queria saber porque me da error en esta linea

    RP.SetDataSource(DT); cuando asigno el datasource al reporte, me da dice que no puede conectarse a la base de datos, a que se debe eso??? Gracias.

  10. Que tal amigo, y como le puedo hacer para que los datos del reporte sean tomados desde la base de datos(tablas), y no manualmente?

    O sea en vez de:

    01 // Crear Objeto de Dataset
    02 Datos DS = new Datos();
    03
    04// Crear Objeto del visor de reportes
    05 VerReporte VER;
    06
    07//Agregar Datos a la(s) tabla(s) que nos interesa(n) del dataset
    08
    09// En este caso llenare datos manualmente (SOLO PARA EJEMPLIFICAR)
    10 DS.Tabla.Rows.Add(“Sergio”, “sergio@example.com”, “123 44 55″); como indico aqui que lo tome de una tabla y un campo determinado??
    11 DS.Tabla.Rows.Add(“Alberto”, “Alberto@example.com”, “123 44 55″);
    12 DS.Tabla.Rows.Add(“Inzunza”, “Inznuza@example.com”, “123 44 55″);
    13
    14 // Inicializar el visor de reportes y mandarle la tabla con los datos
    15 VER = new VerReporte(DS.Tabla);
    16 VER.ShowDialog();

  11. excelente como dice burns y exaaaacto jajaja … muchas gracias amigo aun tu tutorial esta enseñando gracias. ya comento mis logros …saludos
    un adelanto, no se si ya se a echo pero e aplicado c# para mostrar una aplicacion web con el componente webbrowser, creando un analizador de cadenas puedo rescatar datos y ejecutar eventos una aplicacion hibrida le llamo.
    ya pongo algunos ejemplos como por ejemplo para leer un puerto usb-datos seriales y mostrarlo en una pagina php … hay les muestro mas adelante. estoy creando mi sitio para compartir todo lo aplicado en mis desarrollos.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s