Como crear reportes Crystal Reports con ASP.NET

Crear Reportes Crystal Reports en ASP.NET es casi igual a como los creamos en VB.NET y a como lo expongo en este artículo es como me parece que es la forma mas sencilla y la que me ha dado mejor resultado.

Descargar Ejemplo CrystalASP_VB.zip
El directorio virtual debe llamarse “CrystalASP_VB”

Como primer paso debes crear un dataset en la aplicación web

Luego le agregamos el código a nuestro dataset (este código es para este ejemplo, ustede debe modificarlo a su necesidad)

Una ves que tenemos nuestro xml creado le indicamos que genere el DataSet

Ahora debemos crear el reporte de crystal.

Y una ves creado vamos al Field Explorer del reporte y agregamos la base de datos, en este casoagregamos el dataset que tenemos en nuestra solución.

Buscamos el dataset y lo agregamos.

El siguiente paso seria construir nuestro reporte con los datos que nos permite el dataset. (Para más entendimiento ver solución en archivo de descarga)

Una ves que tenemos el DataSet y el Reporte de Crystal hechos ahora nos vamos mostrarlo en la página web.

Agregamos un CrystalReportViewer donde deseamos que se vea el reporte.

Y en el código le enviamos el dataset lleno con los datos que deseamos que se muestren en el reporte.

Luego de esto solo nos queda compilar nuestra aplicación y el resultado debería verse algo así.

Ahora si, usted sabe como crear reportes Crysta Reports para aplicaciones ASP.NET.

Descargar Ejemplo CrystalASP_VB.zip
El directorio virtual debe llamarse “CrystalASP_VB”

50 comments

  1. Anónimo - July 18, 2005 1:37 pm

    excelente!!!

    Reply
  2. Anónimo - October 25, 2005 3:29 pm

    muy bueno, gracias

    Reply
  3. Anónimo - March 15, 2006 11:53 am

    hola a todos
    estoy empezando a usar ASP…el caso es que tengo un reporte en Crystal Reports que requiere un parametro , ya esta listo sólo tengo que llamarlo…en VB net con este código me funciona
    Try
    oRpt = New ReportDocument
    oRpt.Load(“SCP_Inf_Edo_Inv.rpt”)

    Dim logOnInfo As New TableLogOnInfo
    myParameterFieldDefinition = myParameterFieldDefinitions(“PROYECTO”)
    myParameterDiscreteValue.Value = “B02″
    currentParameterValues.Add(myParameterDiscreteValue)
    myParameterFieldDefinition.ApplyCurrentValues(currentParameterValues)

    logOnInfo.ConnectionInfo.UserID = “SOROZCO”
    logOnInfo.ConnectionInfo.Password = “sorozco”
    logOnInfo.ConnectionInfo.DatabaseName = “dbserver/cicy”
    oRpt.Database.Tables.Item(0).ApplyLogOnInfo(logOnInfo)
    CrystalReportViewer1.ReportSource = oRpt

    Catch ex As Exception
    Response.Write(ex.Message.ToString())
    End Try

    pero en asp, no. alguien podria hacer el favor de comentar k estoy haciendo mal?

    saludos

    Reply
  4. Anónimo - April 13, 2006 11:42 pm

    Excelente ejemplo para comenzar con crystal, muchas gracias

    Reply
  5. Anónimo - July 12, 2006 10:46 am

    cualquiera esta pagina, jejejej

    Reply
  6. Anónimo - July 12, 2006 10:47 am

    mi, no entender

    Reply
  7. Anónimo - July 13, 2006 11:05 am

    Saludos!

    Me dirijo a el amigo que tiene el problema al intentar mostrar el reporte en asp, estube probando y creo que lo que tienes que hacer es en oRpt.Load(“SCP_Inf_Edo_Inv.rpt”), escribir toda la direccion donde se encuantra el reporte a mi me funciona no se si te serviara a ti espero ayadarte con esto!

    Reply
  8. Anónimo - August 2, 2006 11:48 am

    Esta muy bueno!!!

    Si ya tenemos una lista grande de reportes de crystal, y para no tener que volver a realizar todos los reportes, existe alguna manera de montarlos en una pag. web. podria usasrce derepente dreamweaver??

    si me pueden ayudar con esto, mucho sabria agradecerles.

    Danny
    dbroner@hotmail.com

    Reply
  9. Anónimo - August 15, 2006 4:52 pm

    buen ejemplo caro y preciso

    Reply
  10. Anónimo - September 21, 2006 2:37 am

    Claro y conciso, ¿pero y el botón Imprimir?

    Reply
  11. Anónimo - September 23, 2006 11:23 am

    excelente

    Reply
  12. Anónimo - September 27, 2006 5:39 pm

    para el que pregunta sobre el boton imprimir, Crystal lo que hace es crear texto html que se muestra en pantalla, osea lo que se hace al fin y al cabo es que pasa el reporte de crystal a formato html. Si se desea imprimir pues seria con el imprimir normal del Internet Explorer o el que estes usando, yo te recomendaria que para imprimir mejor lo exportes a pdf o excel y de ahi lo imprimas.

    aqui esta el codigo para exportar reportes crystal reports en asp.net
    http://www.dotnetcr.com/index.aspx?ID=3&art=79

    Reply
  13. Anónimo - October 9, 2006 11:55 am

    holas!

    Reply
  14. Anónimo - November 1, 2006 7:51 pm

    MUY BUENO PERO SI TENGO QUE PONER MAS DETALLES, TENGO SOLO UNA SECCION DE DETAILS,
    EN C# NET VISUAL STUDIO 2005
    COMO LE HAGO PAR PONER MAS DE UN DETALLE EN EL MISMO REPORTE?????

    Reply
  15. Anónimo - November 29, 2006 11:59 am

    Si alguien me puede ayudar con un problema que tengo con crystal report se los agradecería mucho.

    Creo un DataSet a nivel de codigo, en el cual almaceno la información de una consulta con un stored procedure. La información almacenada en ese DataSet la muestro en un Datagrid pero al momento de mostrarla en el reporte no lo hace, sino que muestra la informacion total que se encuentra en la tabla de la base de datos.

    Si alguna persona me puede ayudar diciendome que debo hacer para que el reporte tome la información que almaceno en el DataSet y no directamente de la base de datos.

    Esta es la forma como lleno el DataSet

    DataSet dsConsultaDepto = new DataSet();

    SqlCommand consultaDepto = new SqlCommand();
    consultaDepto.CommandType = CommandType.StoredProcedure;
    consultaDepto.CommandText = “consultaPorDepartamento”;

    SqlParameter parametroDepto = new SqlParameter(“@depto”, System.Data.SqlDbType.Int, 4);
    parametroDepto.Value = depto;
    consultaDepto.Parameters.Add(parametroDepto);

    SqlParameter parametroFechaInicio = new SqlParameter(“@fechaInicio”, System.Data.SqlDbType.NVarChar, 10);
    parametroFechaInicio.Value = fechaInicio;
    consultaDepto.Parameters.Add(parametroFechaInicio);

    SqlParameter parametroFechaFin = new SqlParameter(“@fechaFin”, System.Data.SqlDbType.NVarChar, 10);
    parametroFechaFin.Value = fechaFin;
    consultaDepto.Parameters.Add(parametroFechaFin);

    consultaDepto.Connection = conex;
    SqlDataAdapter daConsultaDepto = new SqlDataAdapter(consultaDepto);
    daConsultaDepto.Fill(dsConsultaDepto, “Depto”);

    return dsConsultaDepto;

    mi correo es rrodriguez80@gmail.com

    Reply
  16. Anónimo - January 5, 2007 9:04 am

    Gracias con esta ayuda complemento mi programacion en capas .
    para el amigo ke tiene problemas con su reporte con parametro .. te digo ke es mejor trabajar con clases create una solo para conectarte a la base de datos y ke ejecute consultas sql y otra clase para menejar tus datos de esta manera no necesitas utilizar el parameter es mas facil y rapido.
    muestra me lo ke tienes y si puedo te ayudo Jahs.
    jahs.scz@gmail.com

    Reply
  17. Anónimo - January 25, 2007 3:11 pm

    con un subreporte funciona

    Reply
  18. Anónimo - February 26, 2007 11:40 am

    Hola,

    tengo un dataset tipado, que se creo con un procedimiento almacenado, que recibe 3 parametros.
    el problema es que no se como pasarle los parametros al reporte.
    :S

    1.- Creo el TableAdapter, enlazado a un Procedimiento almacenado.(aquie se crea el datasettipado)
    2.- Creo el reporte, y lo enlazo al DatasetTipado.
    3.- Creo un Reportesource y le asigno el reporte.
    4.- creo el reporteViewer en mi pagina, y le enlazao el reporte source.

    el problema, es q nose en que paso, le paso los parametros al procedimineto almacenado.

    y si le doy ejecutar me pide, usuario y login :S

    De Antemano Muchas Gracias.

    Reply
  19. Anónimo - February 28, 2007 2:21 pm

    Hola, soy nuevo en esto, pero estoy viendo que en tu data set tienes dos tablas, te comento:
    tengo mi reporte con un data set el cual contiene dos tablas y pues lo que hice para llenar una tabla de mi data set fue lo sig:

    Dim myConnection As New SqlClient.SqlConnection
    myConnection.ConnectionString = strConnection1
    Dim MyCommand As New SqlClient.SqlCommand
    MyCommand.Connection = myConnection
    MyCommand.CommandText = “Select * from CuentasCobrar where IdRegCuenta=6″
    MyCommand.CommandType = CommandType.Text
    Dim MyDA As New SqlClient.SqlDataAdapter
    MyDA.SelectCommand = MyCommand
    Dim myDS As New Reporte
    ”This is our DataSet created at Design Time
    MyDA.Fill(myDS, “CuentasCobrar”)
    ”You have to use the same name as that of your Dataset that you created during design time
    Dim oRpt As New Recibo
    ” This is the Crystal Report file created at Design Time
    oRpt.SetDataSource(myDS)
    ” Set the SetDataSource property of the Report to the Dataset
    CrystalReportViewer1.ReportSource = “C:\Inetpub\wwwroot\Cuentas\Recibo.rpt”
    CrystalReportViewer1.ReportSource = oRpt

    pero el data set tiene otra tabla llamada DatosCliente, bien entonces con la informacion filtrada de la tabla CuentasCobrar con el codigo anterior me muestra la informacion que le pedi de esa tabla pero el reporte tambien contiene campos de la tabla datosCliente el problema esta en que no me muestra los campos de esta ultima tabla, bien tengo unas dudas:

    + en el reporte ya relacione ambas tablas del dataset, (supongo que esta bien, pero mejor explicame si no esta bien )
    + a la hora de que estas creando el dataset tu agregaste 2 tablas igual que yo pero no veo que en el dataset relaciones tus dos tablas, que no deben estar relacionadas tambien en el data set???

    Gracias,espero me puedas ayudar y pues te dejo mi e-mail para aclaraciones scorpionsdd@hotmail.com

    Reply
  20. Anónimo - March 7, 2007 10:54 am

    Este comentario está muy explicativo, me gusta, pero me nace una duda

    Es posible cargar un documento de crystal report desde ASP puro? no ASP.NET. Soy nuevo en esto, y no se si es que ambos lenguajes me implicarán cambios en la manera de invocar a Crystal Reports.

    Muchas gracias de antemano

    Reply
  21. Anónimo - March 8, 2007 3:58 pm

    En visual studio 2005 en formularios webfrom, no me reconoce la referencia la “Dim cr As New crPrueba”, ya cree el reporte pero al momento de compilar me desconoce el “crPrueba” no se si tendria que importar o heredar alguna libreria.
    Pues si me pueden ayudar les agradeceria un montón.
    mi correo juanitanz@hotmail.com juanitanz@gmail.com

    Reply
  22. Anónimo - April 23, 2007 6:42 pm

    so very good my friend

    Reply
  23. Anónimo - April 25, 2007 9:02 am

    Hola, en esta ocasión escribo porq tengo un problemita al que no le he conseguido solucion…. Actualmente estoy trabajando un webform con con c# en visual studio 2003 y sql

    El problema es el siguiente, estoy haciendo unos reportes con crystal los cuales creo perfectamente pero al momento de pasar de pagina el source del reporte simplemente se pierde, abajo dejo el codigo a ver si alguien puede ayudarme….

    public void generar_reporte(string StrSql,CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer)

    {
    StrConn = “Data Source=rm2007;Initial Catalog = NT3400″ ;
    SqlConn = new System.Data.SqlClient.SqlConnection(StrConn) ;
    myCommand = new System.Data.SqlClient.SqlCommand(StrSql,SqlConn);
    SqlConn.Open() ;
    objDataSet.DataSetName = “Reportes”;
    Dataadapter= new System.Data.SqlClient.SqlDataAdapter(StrSql, SqlConn);
    Dataadapter.SelectCommand=myCommand;
    Dataadapter.Fill(objDataSet);
    // Asocia el conjunto de datos con el reporte
    Rel.SetDataSource(objDataSet.Tables[0]);
    // Asocia el reporte con el Visualizador
    CrystalReportViewer.ReportSource = Rel;
    SqlConn.Close();

    }

    private void consultar_Click(object sender, System.EventArgs e)
    {
    f1=get_fecha(Calendar1);
    f2=get_fecha(Calendar2);
    fecha(f1.Year,f1.Month,f1.Day,f2.Year,f2.Month,f2.Day );
    generar_reporte(“SELECT dbo.VistaTrabajador.LASTNAME, dbo.VistaTrabajador.FIRSTNAME, dbo.VistaTrabajador.FICHA, dbo.VistaTrabajador.CTOCOSTO, dbo.VistaTrabajador.TURNO, dbo.VistaTrabajador.CARGO, dbo.OBJECTS.OBJ_LABEL, dbo.HX_ENTRIES.LOCEVTTIME, dbo.SAMPLE.PHOTO1 FROM dbo.VistaTrabajador INNER JOIN dbo.HX_ENTRIES ON dbo.VistaTrabajador.OBJNUM – 1 = dbo.HX_ENTRIES.S_OBJNUM INNER JOIN dbo.SAMPLE ON dbo.VistaTrabajador.OBJNUM = dbo.SAMPLE.OBJNUM INNER JOIN dbo.OBJECTS ON dbo.HX_ENTRIES.S_OBJNUM2 = dbo.OBJECTS.OBJNUM WHERE (dbo.VistaTrabajador.FICHA = ””+q_ficha+””) AND (CONVERT(Char(8), dbo.HX_ENTRIES.LOCEVTTIME, 112) BETWEEN ””+q_aux1.ToString()+”” AND ””+q_aux2.ToString()+””) ORDER BY dbo.HX_ENTRIES.LOCEVTTIME”, CrystalReportViewer1);
    }

    Reply
  24. Anónimo - April 27, 2007 3:49 pm

    esta muy bueno el articulo..

    Reply
  25. Anónimo - May 6, 2007 8:42 pm

    Hola he echo lo mismo, en Visual Sutdio 2005, y a la hora de mostrar la pagina me sale un error de Acceso Denegado( ComInterop…) , como podria solucionar este problema.
    gracias

    Reply
  26. Anónimo - June 19, 2007 10:00 am

    Hola… quisiera saber como crear reportes en visual basic utilizando reportador natural, utilizando crystal report… es urgente… saludos

    Reply
  27. Anónimo - June 25, 2007 9:48 am

    buen articulo, bien explicado. Corri el ejemplo y me funciono, pero al aplicarlo a mi proyecto me aparece lo siguiente:
    The report you requested requires further information
    Server name: DsPruebas
    Database name: _______
    User name: _________
    Password: __________

    No entiendo por que? me podrian ayudar a solucionarlo?
    Gracias

    Reply
  28. Anónimo - June 28, 2007 1:56 am

    hay una casilla de seguridad que se debe desabilitar para que no intente autenticar con seguridad.
    no me recuerdo donde esta pero esta facil de encontrar

    Reply
  29. Anónimo - June 29, 2007 5:04 pm

    Holas mi problema es:
    al hacer :
    Dim cr As New crystalreport1

    no me reconoce el crystalreport1
    Me dicen q falta una referencia..
    ya he hecho la referencia a CrystalDecisions en el proyecto…
    pero = no me reconoce el crystalreport1
    si alguien m puede ayudar se lo agradeceria..

    Reply
  30. Anónimo - June 29, 2007 5:05 pm

    mi msn es fcch_2055@hotmail.com
    ojala q me puedan ayudar :(

    Reply
  31. Anónimo - July 18, 2007 1:30 pm

    Hola a todos!

    Existe alguna manera de pasarle el query a un data set tipado?,o cargar en un reporte crystal report un dataset no tipado?….
    Pq necesito cargar un query, que se convierta en un dataset tipado y luego cuando agregue el crystalreport llamar a ese dataset, el problema es que si no es tipado, no lo agarra!

    Alguien tiene una idea?

    Reply
  32. Anónimo - August 9, 2007 5:19 pm

    como hago para que aparezca un boton de impresion como cuando de programa para windows

    Reply
  33. Anónimo - August 30, 2007 12:20 am

    Holas mi problema es:
    al hacer :
    Dim cr As New crystalreport1

    no me reconoce el crystalreport1
    Me dicen q falta una referencia..
    ya he hecho la referencia a CrystalDecisions en el proyecto…
    pero = no me reconoce el crystalreport1
    si alguien m puede ayudar se lo agradeceria..

    Reply
  34. Anónimo - September 10, 2007 6:45 pm

    Hola gente.
    Alguno sabe porque el Crystal no muestra los numeros decimales tal cual? Ejm.
    En una tabla tengo una columna “Peso” que tiene tipo de dato “real”, pero cuando se muestra en el reporte lo muestra redondeado, pero si ves en la tabla tiene el valor exacto..
    Esto es mas feo q dolor de muelas…
    Y ahora quien podra ayudarme…??

    HH

    Reply
  35. Anónimo - September 20, 2007 11:04 am

    hola a todos necesito ayuda estoy haciendo una aplicacion que genera reportes pero ala hora de mandar a llamar el reporte este habre pero no me devuelve los daors de la consulta y la consulta esta bien ya que de hacho no me manda ningun error aki les dejo el codigo para que cheken por favor

    ””Declaramos un Data Adapter
    Dim daCatClientes As New OracleDataAdapter(consul2, conection)
    ””Un DataSet
    Dim dsCatClientes As New DataSet1()
    ””””y por último, el importantísimo Command Builder
    Dim cbCatClientes As New OracleCommandBuilder(daCatClientes)
    ”Dim mi_dsRepCatclientes As New DataSet1()

    daCatClientes.Fill(dsCatClientes, “PD_ACUMTEMP”)
    daCatClientes.Fill(dsCatClientes, “PD_COMPAG”)
    ”Declaramos una instancia del Reporte
    Dim mi_rptCatClientes As New CrystalReport1()
    ”Le indicamos al reporte que tome los datos
    ”del DataSet
    mi_rptCatClientes.SetDataSource(dsCatClientes)
    ”Delcaramos una instancia del formulario frmReprotes
    Dim miForma As New Reporte()
    ”Le indicamos que debe mostrar mi_rptCatClientes
    miForma.CrystalReportViewer1.ReportSource = mi_rptCatClientes
    ”que muestre el titulo “Reporte de Clientes”

    ”Mostramos el formulario (el cual contiene el reporte)
    miForma.Show()
    conection.Close()
    Catch ex As Exception
    MessageBox.Show(ex.Message, “Imprimir”, _
    MessageBoxButtons.OK, MessageBoxIcon.Error)

    Reply
  36. Anónimo - September 27, 2007 2:31 am

    Para los que tienen problemas al intentar crear una variable del tipo rpt.
    La solucion esta en utilizar una variable de tipo ReportDocument.
    para ello :
    Imports CrystalDecisions.CrystalReports.Engine

    y despues:
    Dim rd As ReportDocument
    rd = New ReportDocument()
    rd.Load(Server.MapPath(“CrystalReport.rpt”))

    A mi me funciona.
    Usuario: jj

    Reply
  37. Anónimo - October 27, 2007 11:20 am

    hola a todos
    no puedo imprimir un reporte en crystal report con C#.net 2005, ya se presenta el reporte pero al momento de imprimir hay errores parece que debo exportarlo y no se como, por fa si alguien puede ayudarme le agradeceria mucho
    atte
    kathy

    Reply
  38. Anónimo - November 9, 2007 11:19 am

    Hola!!! tengo un problema al momento de imprimir mi reporte, cuanto hago click sobre el boton imprimir del crystalreportviewer la pagina se carga y se pierden los datos del reporte por lo q solo me imprime el reporte en blanco sin datos. Quiza sea una pregunta muy ovia para muchos de ustedes pero soy novata y me esta desesperando mucho, si alguien sabe porq me sucede esto, le agredecere mucho su ayuda.

    Reply
  39. Anónimo - February 11, 2008 3:31 pm

    Hola a todos:
    Mi problema no es con crystal reports sino con informe informe…la cuestion es que recien comienzo a trabajar con Vb.net y he hecho un reporte con el agregado informe y a la hora de configurar la página no se como hacerlo, o mejor esa opción sale deshabilitada….la página debe imprimirse horizontal con papel carta….

    espero me puedas ayudar….

    gracias y mucha suerte….

    Reply
  40. Anónimo - February 27, 2008 10:37 am

    Buen artículo, pero quisiera saber donde esta exactamente programada la parte del botón export, yo quisera que me salga esa ventana popup, yo he hecho un sencillo crystal report de prueba y en la vista de siseño yo veo todos los botones como en este ejemplo pero al momento de ejecutar mi aplicación salen x en vez de botones y al dar click en esas x no funciona nada ni el export, ni la paginación, ni el pritn. y no tengo idea de como esta hecho aqui porque no explican eso.

    Gracias amigos.

    Reply
  41. Anónimo - April 25, 2008 11:39 am

    hola he echo todos los pasos pero cuando hago la linea
    dim cr as new crPrueba
    me sale type crPrueba no definido
    acaso se tiene que agregar algun componente

    Reply
  42. Anónimo - June 12, 2008 12:48 pm

    soy favio muy bueno…excelente…sacame una duda es VS2003…???

    Reply
  43. Anónimo - July 11, 2008 10:48 am

    chido, suban como configurar la pagina al tamaño que nosotros queramos porfa
    gracias

    Reply
  44. Anónimo - October 15, 2008 4:10 pm

    ¿esto como se aplica cuando el usuario escoge que tipo de reporte se debe realizar?
    gracias por la colaboracion

    Reply
  45. Anónimo - January 28, 2010 9:53 pm

    favio si este era para 2003 pero igual funciona para las siguientes versiones

    Reply
  46. Anónimo - September 23, 2010 11:18 am

    Hola,
    Me gustraria saber donde esta implementada la parte de los botones imprimir y exportar en tu ejemplo.
    Gracias

    Reply
  47. Anónimo - February 18, 2011 1:41 pm

    Hola, Muy interesante, porfa tu ayuda con lo siguiente: Mi reporte muestra con los estilos y los formatos bien solo 15 reportes y a partir del 16 avo reporte la letra se me hace mas grande y sale distorsionado; no se uq debo realizar para solucionar este problema. De antemano gracias.

    Reply
  48. Anónimo - November 24, 2011 1:22 pm

    buenas, tengo problemas para generar un reporte de tablas con relaciones de muchos a muchos. saben donde hay informacion para solucionar mi problema?

    Reply
  49. Anónimo - January 11, 2012 7:26 am

    hola alguien me puede ayudar, estoy con crystal reports y son novata, quiero insertar una fecha pero trae un dato 1900-01-01 y cuando sea esta fecha quero ke el cr no se muestre cuando sea este dato. No logro encontrar la manera.
    Saludos y Gracias.

    Reply
  50. Anónimo - February 2, 2012 11:13 am

    Graciasss… man me salvaste n mi chamba :D

    Reply

Have your say