none
Como conectar por medio de codigo un crystal report con sql server 2005 y mandar llamar un procedimiento almacenado con parametros

    Pregunta

  • Hola a todos,

    Me preguntaba como podria conectar por medio de codigo SQL server 2005 un Cristal Report y mandar llamar un procedimiento almacenado que recibe parametros, si alguien me pudiera alludar con eso estaria muy agradecido.
    jueves, 20 de agosto de 2009 17:13

Respuestas

  • Hola Megasoft2 ,

    Gracias por tus respues ya solucione mi problema lo que tube que hacer es crear una coneccion Por medio del File Explorer dentro de este en database fields cree una nueba coneccion OLE DB (ADO) en esta mande llamar el procedimiento de la base de datos de sql server.

    Despues de eso solo arratre los campos que me devolbia el parametro al reporte y para finalisar para que no me pidiera el parametro que recibie el procedimiento nu el usuario ni contraseña agrege este codigo en el CrystalReportViewer Load:

    CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
           
            rpt.Load("C:\\Documents and Settings\\programador\\Mis documentos\\Visual Studio 2005\\WebSites\\Pantallas_Muebles\\CrystalReport1.rpt");

            rpt.SetParameterValue("@numero_folio",folio);
            rpt.SetDatabaseLogon("sa","pass");

            CrystalReportViewer1.ReportSource = rpt;

    Y con eso funciono a la perfeccion el reporte te agradesco por tus contribuciones y epero que me sigas resolbiendo algunas otras dudas que tenga ya que soy nuevo y no entiendo muy bien el lenguaje.
    • Marcado como respuesta reypcs viernes, 21 de agosto de 2009 19:25
    viernes, 21 de agosto de 2009 19:24

Todas las respuestas

  • Solo una observacion mas Crystal Report es el de VS2005
    jueves, 20 de agosto de 2009 17:28
  • Otra observacion mas el Crystal Report lo muestro con un CrytalReportsViewer en otra pagina.
    jueves, 20 de agosto de 2009 17:35
  • Hola amigo. la verdad yo te recomiendo usar todo lo relacionado con sql server 2005, contra un dataset generado a nivel de tú aplicación.

    entonce debe mapear simplemente la tabla que te devuelve tu Stored procedure y vincular esto con en el archivo de crystal report .rpt.

    Para eso  debe usar archivo .xsd contra el reporte.

    el xsd si quiere lo puede generar desde la ventana de origen de datos (window data source)

    por favor revisa este link http://msdn.microsoft.com/es-es/library/ms227594.aspx

    y posteriormente se hace llenar tu dataset con el Stored procedure desde codigo y le fija previamente este dataset en especifico datatable a tu reporte antes de invocarlo por pantalla o sea dentrol del control CrytalReportsViewer.

    Bueno cualquier cosa me avisa!

    POR FAVOR CALIFICAME como respuesta, si te sirvio de algo mi información!
    Developer
    jueves, 20 de agosto de 2009 18:09
  • Hola Megasoft2 ,
    Garcias por tu respuesta pero soy nuevo en esto de VS2005 asi que no te entiendo como debo de hacer lo que me explicas, para poder resolver mi problema he eestado buscando en internet y encontre lo siguiente:

    CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
           
            rpt.Load("C:\\Documents and Settings\\programador\\Mis documentos\\Visual Studio 2005\\WebSites\\Pantallas_Muebles\\CrystalReport1.rpt");

            rpt.SetParameterValue("@numero_folio",folio);
            rpt.SetDatabaseLogon("sa","pass");

            CrystalReportViewer1.ReportSource = rpt;

    Pero no entiendo como enviarle el servidor al que me quiero conectar y la base de datos que quiero utilisar asi como tampoco enviarle el procedimiento a utilisar.
    jueves, 20 de agosto de 2009 18:26
  • El codigo anterior lo ingreso en el Load del CrystalReportViewer.
    jueves, 20 de agosto de 2009 18:27
  • Hola reypcs.

    Fijate algo:

    data.dataset dsDatosReportes = new data.dataset();
    ' aqui configura la llama a tu procedimiento almacenado para llenar tu dataset
    ada.fill(dsDatosReportes);
    con.close;

    CrystalDecisions.CrystalReports.Engine.ReportDocument();
           
            rpt.Load("C:\\Documents and Settings\\programador\\Mis documentos\\Visual Studio 2005\\WebSites\\Pantallas_Muebles\\CrystalReport1.rpt");

        rpt.SetDataSource(dsDatosReportes.Tables(0));

            CrystalReportViewer1.ReportSource = rpt;
    y eso todo.

    Trata adaptar esta idea a tu codigo!

    por favor calificame como respuesta!


    Developer
    jueves, 20 de agosto de 2009 19:31
  • Hola Megasoft2 ,

    Gracias por tus respues ya solucione mi problema lo que tube que hacer es crear una coneccion Por medio del File Explorer dentro de este en database fields cree una nueba coneccion OLE DB (ADO) en esta mande llamar el procedimiento de la base de datos de sql server.

    Despues de eso solo arratre los campos que me devolbia el parametro al reporte y para finalisar para que no me pidiera el parametro que recibie el procedimiento nu el usuario ni contraseña agrege este codigo en el CrystalReportViewer Load:

    CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
           
            rpt.Load("C:\\Documents and Settings\\programador\\Mis documentos\\Visual Studio 2005\\WebSites\\Pantallas_Muebles\\CrystalReport1.rpt");

            rpt.SetParameterValue("@numero_folio",folio);
            rpt.SetDatabaseLogon("sa","pass");

            CrystalReportViewer1.ReportSource = rpt;

    Y con eso funciono a la perfeccion el reporte te agradesco por tus contribuciones y epero que me sigas resolbiendo algunas otras dudas que tenga ya que soy nuevo y no entiendo muy bien el lenguaje.
    • Marcado como respuesta reypcs viernes, 21 de agosto de 2009 19:25
    viernes, 21 de agosto de 2009 19:24