Crear Crystal Report sin problemas de conexión

Hola a tod@s,

El siguiente artículo lo voy a crear por las dudas que me he encontrado en los foros de la MSDN y por gente que me ha preguntado directamente en el blog.

Para mostrar esto voy a crear una aplicación Windows en C#, (si alguien necesita el código fuente en VB con pedírmelo lo crearía encantada), voy a usar SQL Server 2005 Express como gestor de base de datos y la base de datos AdventureWorks.

La idea es crear un informe con crystal report cuya conexión será de tipo ADO.NET donde le asignaremos un XML que tendrá un esquema de tablas, con esto podremos diseñar el informe (pero no podremos hacer una previsualización de datos); por otro lado, mediante código crearemos un Dataset con la misma estructura de tablas que hemos definido en el XML y las rellenaremos, y luego asignaremos ese Dataset a informe mediante código.

Antes de empezar una pequeña aclaración. A nivel empresarial se debe tener una buena arquitectura con varias capas, una de ellas de acceso a datos, otra con la lógica de negocio, otra con la definición de objetos, etc. La cadena de conexión debería estar encriptada en el app.config. Sin embargo, el objetivo principal de este artículo es una pequeña guía para ver como podemos plantear la conexión a nuestros informes de crystal.

Los pasos a seguir para alcanzar nuestro objetivo son:

1º. Creamos un nuevo proyecto de Windows que llamo crystal.
2º. Agrego una clase al proyecto en la cual haremos la conexión a la base de datos y rellenaremos un dataset. Para usar las clases de acceso a datos de SQL Server se debe de referenciar a System.Data y System.Data.SqlClient. La clase nos podría quedar de la siguiente forma:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace crystal

    public class Tablas
    {
        private DataTable dtResultado;

        public DataSet DevuelveDataSet()
        {
            //Creo la estructura de la tabla
            dtResultado = new DataTable("empleados");
            dtResultado.Columns.Clear();
            dtResultado.Columns.Add(new DataColumn("EmployeeID", typeof(long)));
            dtResultado.Columns.Add(new DataColumn("Title", typeof(String)));
            dtResultado.Columns.Add(new DataColumn("AddressLine1", typeof(String)));
            //Le añado la PK
            dtResultado.PrimaryKey = new DataColumn[] { dtResultado.Columns["EmployeeID"] };

            //Relleno la tabla con datos de la base de datos
            SqlConnectionStringBuilder bldr = new SqlConnectionStringBuilder();
            bldr["Data Source"] = @".\SQLExpress";
            bldr["Initial Catalog"] = "AdventureWorks";
            bldr["Integrated Security"] = true;

            //Podemos rellenar una tabla como si de una vista se tratara
            string str = "SELECT HumanResources.Employee.EmployeeID, HumanResources.Employee.Title, Person.Address.AddressLine1 " +
                         "FROM HumanResources.Employee " +
                         "INNER JOIN HumanResources.EmployeeAddress " +
                         "  ON HumanResources.EmployeeAddress.EmployeeID = HumanResources.Employee.EmployeeID " +
                         "INNER JOIN Person.Address " +
                         "  ON Person.Address.AddressID = HumanResources.EmployeeAddress.AddressID";

            //Realizo el acceso a datos
            using (SqlConnection con = new SqlConnection(bldr.ConnectionString))
            {
                using (SqlDataAdapter da = new SqlDataAdapter())
                {
                    da.SelectCommand = new SqlCommand();
                    da.SelectCommand.CommandType = CommandType.Text;
                    da.SelectCommand.CommandText = str;
                    da.SelectCommand.Connection = con;

                    da.Fill(dtResultado);
                }
            }

            //Defino el dataset
            DataSet ds = new DataSet();

            ds.Tables.Add(dtResultado);

            //Descomentando esta línea nos sirve para crear el XML con
            //el esquema de tablas que necesitamos
            //ds.WriteXmlSchema(@"C:\report.xml");
            //Elimino de memoria la tabla
            dtResultado.Dispose();
            dtResultado = null;
            return ds;

        }

    }

}

3º. Agregamos un manejador al evento Load del formulario Form1, en el cual podemos crear un objeto Tablas y llamar al método DevuelveDataSet y descomentando la linea //ds.WriteXmlSchema(@"C:\report.xml"); y ejecutando el programa hasta esta línea, podremos obtener un fichero xml con el esquema de tablas que necesitamos. Evidentemente el programa no está terminado, pero hacemos este pequeño truco para no tener que estar escribiendo a mano el XML. Una vez hecho esto, agregamos al proyecto el XML resultante y volvemos a comentar la línea de código que hemos dicho.
4º. Añadimos al proyecto un report de Crystal.
5º. Añadimos al Crystal una nueva conexión de tipo ADO.NET y le asociamos el XML que hemos creado en el punto 3.



6º. Diseñamos el report.
7º. En el formulario Form1 le añadimos un control CrystalReportViewer.
8º. Completamos el Load del formulario con el siguiente código.

private void Form1_Load(object sender, EventArgs e)
        {
            Tablas tb = new Tablas();
            DataSet ds = tb.DevuelveDataSet();

            CrystalDecisions.CrystalReports.Engine.ReportDocument rd = new crInforme();

            rd.SetDataSource(ds);
            foreach(CrystalDecisions.CrystalReports.Engine.ReportDocument sr in rd.Subreports)
            {
                if (sr.Database.Tables.Count > 0 )
                {
                    sr.SetDataSource(ds);
                }
            }

            this.crystalReportViewer1.ReportSource = rd;
            this.crystalReportViewer1.Show();

        }

9º. Le damos a F5 y podemos observar como en el informe se nos muestra correctamente la información.

Si queremos conectarnos a otra base de datos que no sea SQL Server podremos usar el mismo código excepto que en vez de usar System.Data.SqlClient usaremos System.Data.OleDB, pero el resto es igual.

Espero que os haya ayudado este artículo, os dejo el código fuente aquí.

Para obtener el mismo código pero en VB.NET en este artículo http://csanchezg.spaces.live.com/blog/cns!41C0BFBBFE8E1519!540.entry

Un saludo.

71 Responses to Crear Crystal Report sin problemas de conexión

  1. Joshua A. says:

    Muchas Gracias Carmen me gustaria saber si podrias acer el codigo en visual 2005 y con bases de datos 2007 ya que tengo el mismo problema… y no lo consigo .. muchas gracias de ante mano un saludo

  2. Diego says:

    Realmente me sirivio el código, muchas gracias

  3. Anthony says:

    Muy buen articulo ….. muy ingenioso a mi tb me sirvio mucho gracias….

  4. marco says:

    Excelente articulo, me sirvio muchisimo para mi proyecto. Me gustaria saber si tienes articulos sobre implementar la aplicacion en IIS en windows 2003 server, ya lo estoy haciendo pero me presenta problemas en la autenticacion. Muchas Gracias

  5. Omar says:

    Hola Carmen, muy valioso el articulo, solo tengo una pregunta, estoy haciendo un sitio web y me sigo de tu aticulo para crear mi reporte, solo que creo que la linea
     
    CrystalDecisions.CrystalReports.Engine.ReportDocument rd = new crInforme();
     
    no la debo colocar, sabes que debo hacer en vez de esto? es Urgente, Te agradeceria la ayuda
     
    Saludos,
     
    Omar

  6. Carmen says:

    Hola Omar,
     
    Realmente no se que te está pasando, de todas formas este artículo es simplemente una pequeña guía que no tiene por qué recoger todas las casuísticas. Yo lo he hecho para una aplicación Windows, no lo he probado para una aplicación Web. Para el caso que he desarrollado funciona, incluso puedes bajarte las fuentes.
     
    Un saludo.

  7. Jorge says:

    Muchas Gracias Carmen copie tu codigo y lo converti a Vb Net 2005 y funciono perfectamente.
    espero estar mas seguid por aqui.
    saludos y hasta pronto

  8. Jorge says:

    Muchas Gracias Carmen copie tu codigo y lo converti a Vb Net 2005 y funciono perfectamente.
    espero estar mas seguid por aqui.
    saludos y hasta pronto

  9. absolutforyou says:

    davvero niente male questa informazione
    ti auguro una buona giornata

  10. jose says:

    bueno estubo algo bueno pero yo preferiria una conexion de el reporte no de un xml si no a la base de datos. bueno pero que no sea con el asistente si no mediante una cadena de conexion normal. porq q si lo hag con asistente cada vez q cambio de servidor tendria q colocar el nombre del nuevo servidor a cada reporte imaginate q tenga como 50. pero si lo hago de mi conexion principal entonces solo lo cambio ahi y listo sirve para todo. muchas gracias salud.

  11. Leonardo says:

    hola no se si sepueda poner esto aqui alver esto vi que talves me pudieras ayudar  estoy crean un programa que mustre un informe con el contenido de una base de datos en access y cuando le doy click al boton me tira un cuadro pidiendo contraseña aparentemente lo que pasa es que no se encuentra el path de la base de datos.graciasespero que me puedas ayudar

  12. Leonardo says:

    hola no se si sepueda poner esto aqui alver esto vi que talves me pudieras ayudar  estoy crean un programa que mustre un informe con el contenido de una base de datos en access y cuando le doy click al boton me tira un cuadro pidiendo contraseña aparentemente lo que pasa es que no se encuentra el path de la base de datos.graciasespero que me puedas ayudar

  13. Carmen says:

    Hola Leonardo,
     
    Sigue las mismas instrucciones del ejemplo, pero cambiando la cadena de conexion a tu Access ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\somepath\\mydb.mdb;User Id=admin;Password=;" ) y usando System.Data.OleDB tal y como indico al final del artículo, ah y por supuesto las select tienen que ir acordes con tu base de datos.

  14. Rafael says:

    HOla Carmen:
    gracias por el artículo "Crear Crystal Report sin problemas de conexión". Me sirvió mucho. ¿Sabes si es posible generar Crystal Reports en tiempo de ejecución y que se graben como un archivo separado, no dentro del proyecto (por ejemplo en el Escritorio)?

  15. Esteban says:

    hola carmen:
     
    Pues si es muy interesante tu articulo, y si lo pudieras poner para visual basic net 2005 te lo agradeceria mucho.
    un saludo.
    Esteban

  16. Carmen says:

    Hola,
     
    Hace tiempo que ya lo colgué en VB.NET, http://csanchezg.spaces.live.com/blog/cns!41C0BFBBFE8E1519!540.entry
     
    Saludos.

  17. Juan Carlos says:

    Carmen, Soy una persona que se va iniciando en esto de los reportes con crystal, asi que solo trabajo Visual Basic 6, pero no se como se agrega Crystal, es mas ni siquiera se si es un programa independiente, asi que te agradeceria toda la informacion de crystal que me puedas enviar, ais tambien, si me puedes decir como lo consigo seria mucho mejor.
     
    De antemano muchas gracias y espero no molestar.

  18. Carmen says:

    Hola,
     
    Mira si te puede ayudar la informacion del siguiente enlace
     
    http://www.elguille.info/vb/vb_crystal.htm
     
    Un saludo,
    Carmen

  19. Rafael says:

    HOla Carmen:
     
    quisiera saber si es posible lo siguiente con Crystal Reports y C#:
     
    cargar y mostrar un reporte de Crystal Reports, bajo las condiciones siguientes:
     
    1. El reporte debe crearse como un archivo separado, no dentro del proyecto.
    2. El proyecto no debe conectarse directamente al origen de datos, deberá recibir en tiempo de ejecución la data que mostrará.
    3. El reporte se cargará, llenará y mostrará en tiempo de ejecución.
     
    Saludos,
     
    Rafael

  20. Rafael says:

    ¿Alguien sabe si es posible crear un reporte de Crystal en tiempo de ejecución que se grabe fuera del proyecto?
    Por favor ayúdenme.

  21. Carmen says:

    Hola Rafael,
     
    Lo primero es saber que versión de Crystal Reports estás usando. Para crear un informe de cero desde .NET se tiene que usar la librería CrystalDecisions.CrystalReports.Engine, yo no te puedo dar un ejemplo porque nunca lo he hecho, pero investiga un poco el tema.
     
    Si lo que quieres es implementar en una aplicación un diseñador de informes para que el usuario se cree su propio report tienes que usar el componente Crystal Reports Designer que por defecto no se muestra en la barra de herramientas, pero que se puede agregar siempre que tengas una versión profesional de Crystal (es decir, no la que viene por defecto con el Visual Studio).
     
    Un saludo,
    Carmen

  22. fernando says:

    CrystalDecisions.CrystalReports.Engine.ReportDocument me sale un error al utilizar esta linea, es una aplicacion web en .net 2005, por que es??gracias

  23. Carmen says:

    ¿Has agregado las referencias oportunas al proyecto?

  24. Alvaro says:

    Hola Carmen,
    tengo una duda, hice un reporte en c# con crystal pero al pasarlo a una maquina que no tiene un ambiente de desarrollo, no me quiere correr. Sabes si necesito alguna libreria en especial para poderlo visualizar en cualquier maquina. Saludos

  25. Carmen says:

    Hola Diabolik,
     
    Hay que crear un instalador del programa y en él añadir los módulos de combinación del crystal que por supuesto dependen de la versión que tengas. En el caso de que no tengas los módulos de combinación apropiados los puedes descargar desde la página http://www.businessobjects.com/
     
    Un saludo.

  26. Manuel says:

    Que tal amiga
     
    Estoy tratando de hacer algo similar pero con visual basic, mi aplicacion crea una tabla dbf que la utilizo como apoyo para generar el reporte crystal, pero lo que no se como hacer es llamar al reporte crystal para que me muestre los datos que mande al dbf
     
    si me puedes ayudar te lo agradeceria mucho
     
    gracias

  27. guillermo says:

    hola Carmen , quisiera pedirte ayuda para crystal report en
    vs2005 c# para Windows From
    como añado campos al datatable del
    reporte  mediante código ?
    si se que tengo el dataset o datatable de mi consulta a la base de tatos , mi
    problema es q varían los campos según la consulta realizada ,de los cuales 4
    campos son siempre lo mismo ,pero necesito añadir mas campos al tabla del reporte.
    Espero tu respuesta gracias, un abrazo y chusito.

  28. guillermo says:

    upss olivide colocar mi nombre

  29. Orlando says:

    Hola Carmen, primero que nada un saludo por el excelente apoyo que das con tus conocimientos!!!Tengo un problema en el que quizas puedas ayudarme, estoy trabajando una aplicación en vb.net, necesito crear algunos reportes lo cuales los estoy haciendo en Crystal Reports 11, al momento de crear el reporte utilizo una conexión OLE DB a un sql server 2000, pero no utilizo las tables, sino agrego un comando, ahora lo que deseo hacer es desde mi vb.net cargar el reporte y al mismo tiempo mandar el resultado de un select, estoy intentadolo pero no obtengo resultado, esto si lo podia hacer en visual basic 6. Te agradeceria tu apoyo.SldsOrlando Sedamano.

  30. Carmen says:

    Hola,
     
    ¿No te sirve algo parecido al artículo?, por lo que veo es mas o menos tu duda, ¿no?
     
    Saludos.

  31. Adrián says:

    El tutorial esta Excelente.
    Me puedes pasar el proyecto en visual basic .net
     
    Saludos

  32. Carmen says:

    Hola,
     
    La versión en VB.NET la puedes obtener en http://csanchezg.spaces.live.com/blog/cns!41C0BFBBFE8E1519!540.entry 
     
    Saludos.

  33. geo says:

    es muy explicativo el tutorial.
    Una pregunta: si la cadena de conexion estubiese encriptado en el archivo app.config. ¿cuál es manera más óptima para distribuir el ejecutabe de la aplicación?. ya que la cadena de encriptación es válida solo para el pc que la generó. sabes de algún proceso para que la cadena encriptada sea válido para otros pcs.
    voyager
     

  34. Carmen says:

    Hola,
     
    Usa la clase System.Security.Cryptography. Para mas información: http://msdn.microsoft.com/es-es/library/system.security.cryptography(VS.80).aspx
     
    La idea sería crear un componente que tenga 2 funciones que pasemos por parametro una cadena que por un lado la cifre y por otro la descifre, luego en la aplicación que quieres distribuir referenciar tu componente de cifrado, poner en el app.config la cadena de conexion tal y como sería después de cifrarla y en el código cuando la tengas que usar en vez de usar la cadena tal y como está en el app.config, usar la cadena que nos devolvería la función descifrar de tu componente cuyo parámetro es la cadena de conexion cifrada.
     
    Espero haberte ayudado.
     
    Un saludo,
    Carmen

  35. lorelay says:

     
    Hola Carmen,
     
    Estoy intentando hacer un informe para Windows Forms, pero no utilizo Crystal Reports, sino un ReportViewer. No consigo que me funcione y tengo varias dudas:
     
    – He creado un dataset para asignárselo al informe como origen de datos, pero en realidad los datos los obtendré de un servicio web en tiempo de ejecución. ¿Cómo hago para mostrar estos datos en el informe? No me sale nada…
     
    – ¿Me sirve esta opción o es mejor que trabaje con Crystal Reports?
     
    Gracias y un saludo,
    Lorena
     
    Lorena

  36. Carmen says:

    Hola Lorelay,
     
    Cuando se hace un informe tanto si es con Crystal o con Reporting Services, no basta con usar un viewer, hay que crear un informe ya sea un .rpt o un .rdlc respectivamente y luego asociarlo al viewer correspondiente. Lo que creo que te está faltando esto.
     
    En cuanto a usar una tecnología u otra, yo creo que a no ser que tengas que hacer el mega ultra informe super complicado, te vale tanto uno como otro, y sinceramente, yo usaría reporting.
     
    Un saludo,
    Carmen

  37. lorelay says:

    Hola Carmen,
     
    Gracias por tu respuesta, aunque sí que tenía hecho el .rdlc y la cuestión era asociarle los datos que me vienen del servicio web. Finalmente conseguí que funcionase, pero tengo un problema y es que, desgraciadamente (yo no hice la base de datos), tengo algunos campos cuyos nombres de columna contienen espacios, y los valores de estos campos no me salen en el informe.
     
    He probado a ponerlos entre corchetes, comillas, paréntesis… pero nada. ¿Hay alguna solución, o tendré que cambiar los nombres de columna en la base de datos?
     
    Saludos.
     
     

  38. Carmen says:

    Hola Lorelay,
     
    ¿Que gestor de base de datos usais?, lo que se me ocurre es que en las select que uses crear alias a los campos y que el informe haga referencia a esos alias.
     
    Un saludo,
    Carmen

  39. Eric says:

    Buenisimo!! Me recirbio el ejemplo para terminar un proyecto..!Saludos, Eric!

  40. Carmen says:

    Me alegra el que te haya servido.

  41. Félix Ángel says:

    Que sucede si el datatable es creado dinamicamente dependiendo de valores que uno selecciona en su formulario winform??, la estructura del datatable sería desconocida hasta cierto punto. por favor despejame la duda 🙂

  42. Carmen says:

    Se puede cargar el datatable dinámicamente, pero tiene que tener los campos que hayamos definido en el esquema xml que hemos usado para crear el crystal, es decir, si tu creas un datatable cuyos campos no están reflejados en el esquema xml cuando se lo pases al crystal pasará de ello.

  43. Marco Antonio says:

    Hola Carmen, quisiera hacerte una consulta:
     
    Mira, como puedo agregar un campo image del sql server a un reporte en crystal report 9.2?.
     
    Muchas gracias

  44. Carmen says:

    Hola Marco Antonio,
     
    Se puede hacer pasando una tabla con el campo image de tal manera que sea la imagen convertida en array de bytes.
     
    Un saludo.

  45. Rafael says:

    Buenas Carmen.
     
    Lo primero de todo agradecerte la ayuda que proporcionas publicando tus conocimientos y tus ejemplos. Gracias!
     
    Te quería pedir ayuda porque llevo varios días intentado solucionar un error con los informes de Crystal XI que antes estaban funcionando con 8.5. Te comento:
     
    Desde una aplicación ASP.NET he intentado lanzar un informe con distintas conexiones a la base de datos de Oracle. Estos son los distintos errores según la conexión que utilice:
     
       – OLE DB. Después de añadir el procedimiento almacenado al rpt, no despliega del explorador de campos las columnas que devuelve el almacenado, por lo tanto no puedo añadir campos al informe.
     
       – ODBC RDO. Al proporcionar el valor del parámetro del informe mediante la ventanita que sale al elegir el almacenado de los orígenes de datos, muestra el siguiente error: "Error de conector de base de datos:\’42000:[Microsoft][ODBC driver for Oracle]Error de sintaxis o infracción de acceso\’".
     
       – XML. Al hacer el SetDataSource del ReportDocument asignándole el dataset correspondiente (he comprobado que tiene datos) devuelve el siguiente error:
          Código error: -2147467259
          Descripción: Error del servidor de aplicaciones de informe.
     
       – Servicios de Oracle. Al intentar añadir el procedimiento almacenado desde la carpeta de Calificadores muestra el siguiente error: "Argumento proporcionado no válido.".
     
    Por favor, si se te ocurre algo dímelo, no sé qué hacer ya. ¿Puede ser de la configuración del servidor?.
     
    Muchas gracias por adelantado.
    Un saludo Carmen.

  46. Carmen says:

    Hola Rafa,
     
    Tiene pinta de ser temas de seguridad de base de datos, ¿estas accediendo con un usuario con los privilegios necesarios?
     
    Un saludo,Carmen

  47. alex says:

    Hola! Primero gracias por el ejemplo.Tengo una duda al respecto del punto 8. Supongamos que tengo un report hecho , llamemosle crMenu.rpt, para llamarlo, se seguiria el modelo del ejemplo?  Segundo, en el caso de que el report tuviera un subreport, que le pasaramos parametros, en que momento tendriamos que declararlos? Muchas gracias por adelantado

  48. Edgar says:

    Hola carmen
     
    Soy Edgar Cota de los Mochis sinaloa, tengo unos dias con un problema extraño, deseo que tu experiencia me ayude a resolverlo.
     
    El problema consiste en que cuando  le mando parametros a mi reporte me dice :  The report you requested requires further information.

      mssql2.ourinternet.us,5801

    Server name: 

    Database name: 

    User name: 

    Password: 

    Use Integrated Security 

     pero solo sucede cuando paso los parametros, mando llamar el mismo reporte con valores fijos, sin paso de parametros y funciona correctamente, trate de hacerlo con dataset, pero no se como usarlos, programo en 3 capas, y uso el query que tiene el reporte de crystal en la consulta de sql, lo curioso es que la misma forma en otro servidor funciona correctamente al igual que en mi equipo, pero en el servidor que aparece arriba en especifico no funciona.
    paso los parametros de la siguiente manera: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load              Dim vidfactura As Integer = Request.QueryString("idfactura")       Dim vcantiletra As String = Request.QueryString("cantiletra")       Dim vtotal As Double = Request.QueryString("total")              CrystalReportViewer1.LogOnInfo.Item(0).ConnectionInfo.UserID = "web"       CrystalReportViewer1.LogOnInfo.Item(0).ConnectionInfo.Password = "Aloja"        Dim objIdFactura As New CrystalDecisions.Web.Parameter       objIdFactura DefaultValue = vidfactura       objIdFactura .Name = "pidfactura"       CrystalReportSource1.Report.Parameters.Add(objIdFactura)        Dim objCantiletra As New CrystalDecisions.Web.Parameter       objCantiletra.DefaultValue = vcantiletra       objCantiletra.Name = "pcantiletra"       CrystalReportSource1.Report.Parameters.Add(objCantiletra)        Dim objTotal As New CrystalDecisions.Web.Parameter       objTotal .DefaultValue = vtotal       objTotal .Name = "@total"       CrystalReportSource1.Report.Parameters.Add(objTotal) 
    End Sub

  49. Lilia says:

    Hola Carmen tengo una duda yo estoy creando reportes pero lo hago de la manera fácil sin código a puro wizard y presento el reporte con el crystalreportviewer con la propiedad reportsource el problema es que si paso el aplicativo de la máquina en la que desarrollé los reportes a otra máquina tengo problemas, me pide un ID y contraseña a pesar de que creé los reportes con Integrated security y me parece pero no estoy segura que la solución que tu presentas con los datasets y eso me podría ayudar a solucionar dicho problema estoy en lo correcto? y si no como puedo arreglar este problema?, muchísimas gracias

  50. Matias says:

    Hola Carmen como estas?? Tengo un problema con los Crystal Reports que me esta llevando bastante tiempo resolver, y tal ves vos me podes ayudar. Lo que pasa es que, desde el Visual Studio 2005 estoy creando un reporte, y me tuve que cambiar de maquina para trabajar, la cual tiene la misma version del visual studio instalado asi que no tendria que haber problemas. Pero el reporte se ve diferente, el area de trabajo se ve mas chica, los campos de texto y todo lo que tenia esta en el mismo lugar, entonces me genera un reporte de 4 hojas, siendo que en las otras maquinas es de 1. Tenes idea como puedo corregir este problema???? Muchas gracias de antemano. Saludos

  51. Ricardo José says:

    MUCHACHA! ME HAS SALVADO EL PELLEJO.. ERA LO QUE ESTABA BUSCANDO.. MUCHAS GRACIAS!

  52. FLOR says:

    hola, ya tengo mi consulta de referencias cruzadas en sql server 2000, ahora quiero mostrar los resultados de esa tabla de referencias cruzadas en un crystal report, las columnas son creadas automaticamente, por lo k mi duda es como jalo todos los campos generados desde crystal, y k sea dinamico el colocar las columnas.

  53. FLOR says:

    cual quier respuesta a mi correo porfis, maranatha_750@hotmail.com

  54. Jessica says:

    Hola Carmen!!! Fijate que tengo una aplicacion tipo WEB en .NET pero cuando le digo a ReportDocument.Load("mireporte.rpt"); me marca error, me dice que la ruta no se puede encontrar. que puedo hacer??

  55. DAFA says:

    Hola, por favor necesito ayuda…Estoy utilizando web developer express 2005, sql server 2000 y crystal report 9, pero no se como hacer la conexion de crystal con la base de datos. (SI PUEDE RESPONDER A MI EMAIL(dianita.alejandra@hotmail.com) GRACIAS)

  56. Alejandro -GeNeTiKo- says:

    Hola Carmen, por favor necesito un "empujoncillo"… Estoy diseñando un informe usando ODBC accediendo IBMDB2 todo en mi maquina funciona excelente pero al cambiar de maquina me sale un error diciendo que la conexion no esta creada. tienes algun codigo ASPX que me puedas regalar?

  57. Isabel says:

    Hola Carmen,Soy principiante con Crystal report 2008 y aqui me estoy peleando con el siguiente problema:Tengo un infome para imprimir facturas en continuo, cada factura contiene 1 encabezado de pagina, 2 subinformes y un pie de pagina. El subinforme 1 contiene lineas de los articulos y el subinforme 2 contiene las lineas de los vencimientos de la factura y es posible que uno u otro subinforme salten de pagina.Todo funciona OK, pero lo que no sé como resolver es que pinte el pie de pagina (que contine los totales de la factura) solo cuando sea la ultima pagina de esa factura.No sé como consultar si se ha terminado de pintar completamente el subinforme 2.A ver si puedes ayudar,Un saludo,

  58. Heiner says:

    Hola , me parece bastante interesante el tema que explicas, ahora me gustaría saber si me puedes ayudar , estoy realizando un proyecto donde se utiliza dos base de datos (Sql Server 2005 ,Oracle 10g), y necesito ligar de alguna manera las dos base de datos para generar un reporte ( ya sea por procedmientos almacenados desde oracle y dataset desde sqlserver), saludos y espero que me puedas ayudar (Estoy trabajando en Vb.net 2005 )este es mi correo heinergc@hotmail.com Gracias

  59. Mario Martin says:

    HOLA CARMEN :Y SI QUISIERA KREAR SOLO UN ARCHIVO XML DE CONEXION, PARA PODER CAMBIAR LA RUTA DE MI SERVIDOR SIN TENER K REALIZAR NUEVAMNETE MIS REPORTES . VB .NET– SQL 2005 — CRYSTAL REPORT 11

  60. Mario Martin says:

    MI CORREO ES Martin_3560@hotmail.comespero puedas ayudarme..\’\’\’\’

  61. ricardo pinilla says:

    hola carmen: me parce genial este articulo.. y quisiera saber si me podrias ayudar, lo que pasa es que estoy creando un reporte con crystal report 10 desde .net. He creado un dataset tipado, cuando mustro los datos en un grid, me salne sin ningun problema, pero cuando los trato de cargar en el crystal report no me sale nada solo me salen los nombres de las columnas mas no me sale ningun dato… si me puedes ayudar estaria 100% agradecido..

  62. Rita says:

    Hola, Por Favor tengo una duda con respecto a estas sentencias, te agradeceria mucho tu ayuda
    deseo que cargue un xml en el reporte me conecto con ADO NET (XML) CRYSTAL2008 Y VISUAL BASIC NET 2008 PORFAS ahorita estoy probando en un reporte desde mi maquina pero generalemte lo leo en la red y el xml lo carga de la pc del usuario

    dts = reporte_porcobrar() ‘aca devuelve un cursor osea una tabla
    dts.WriteXmlSchema(«C:\report.xml»)
    myReport.Load(«c:\repEstadoCtaCliente.rpt»)
    myReport.SetDataSource(dts)
    CrystalReportViewer1.ReportSource = myReport

    me visualiza el reporte pero no me deja exportar a excell sale error :
    Error en archivo repestadoctacliente{4f3……….}.rpt: DLL de exportacion o formato de exportacion no valido

    y si me exporta en word y pdf menos en xls

    saludos

  63. zetaperu says:

    Carmen, es posible que el archivo del ejemplo lo puedas volver a subir tanto el de C# como VB, pues ninguno permite bajarlo.

    Gracias de antemano!

  64. zetaperu says:

    Ya pude descargarlo, gracias de todas maneras.

    Listo!

  65. Rodrigo Cabrera says:

    Gracias Carmen, estaba loco buscando como pasar la estructura del DS a XML, me sirvió mucho ti didactico ejemplo, ahora puedo hacer la llamada en 3 capas usando un el DS del WS.
    Saludos

  66. Marlon says:

    excelente aporte pero al crear un instalador en el cual la ruta cambie como se crearian se dañaria la ruta como se hace para solucionar eso… segun tu cargar eso de documentandsetting que me ayuda a que la ruta no se dañe al cambiarlo de pc

  67. isabel says:

    hola me podrias explicar lo mismo pero en vb.net 2010

  68. Abel Cesar says:

    Me costo un poquito al comienzo pero al final me salio (así se aprende rompiéndose la cabeza).
    De todos modos es justo lo que necesitaba mil gracias.

  69. mundocr says:

    Hola!! mira no logro entender de donde sacas el crInforme()….
    CrystalDecisions.CrystalReports.Engine.ReportDocument rd = new crInforme();

    gracias!

  70. mari says:

    hola muchas gracias queria saber si tienes disponible el codigo en c#… muchas gracias!!

Replica a DAFA Cancelar la respuesta