none
No carga el reporte en Crystal Report RRS feed

  • Pregunta

  • Buenas estoy intentando hacer un reporte en cristal report, y cuando lanzo el reporte me carga el formulario pero no me carga los datos cargados en el Dataset creado. O facilitio el código para ver si me podeis decir donde puede estar el problema. Gracias

    privatevoidbtnTotalPetis_Click(objectsender, EventArgse)

            {

               

    try


                {

                   

    stringconstr = String.Format("User Id={0}; Password={1}; Data Source={2}",

                                     txtUsuario.Text, txtPass.Text, txtSource.Text);

                   

    OracleConnectionconn = newOracleConnection(constr);

                    conn.Open();

                   

    if(rbRutina.Checked)

                    {

                        sql =

    string.Format("Select pa.patientname as Nombre,pa.patientsurname as Apellido,re.requestlabel as Petición, re.isurgent as Urgente from patient pa, request re where pa.patientid=re.patientid and re.requestdate between to_date('{0} 00:00:00', 'MM/dd/yyyy HH24:MI:SS') and to_date('{1} 23:59:59', 'MM/dd/yyyy HH24:MI:SS') and isurgent='N'",

                                                 dtpDesde.Value.ToString(

    "MM/dd/yyyy"),

                                                 dtpHasta.Value.ToString(

    "MM/dd/yyyy"));

                    }

                   

    if(rbUrgente.Checked)

                    {

                        sql =

    string.Format("Select pa.patientname as Nombre,pa.patientsurname as Apellido,re.requestlabel as Petición, re.isurgent as Urgente from patient pa, request re where pa.patientid=re.patientid and re.requestdate between to_date('{0} 00:00:00', 'MM/dd/yyyy HH24:MI:SS') and to_date('{1} 23:59:59', 'MM/dd/yyyy HH24:MI:SS')and isurgent='Y'",

                                                 dtpDesde.Value.ToString(

    "MM/dd/yyyy"),

                                                 dtpHasta.Value.ToString(

    "MM/dd/yyyy"));

                    }

                   

    if(rbTodas.Checked)

                    {

                        sql =

    string.Format("Select pa.patientname as Nombre,pa.patientsurname as Apellido,re.requestlabel as Petición, re.isurgent as Urgente, ser.servicedescription as Servicio from patient pa, request re, service ser where pa.patientid=re.patientid and re.serviceid=ser.serviceid and re.requestdate between to_date('{0} 00:00:00', 'MM/dd/yyyy HH24:MI:SS') and to_date('{1} 23:59:59', 'MM/dd/yyyy HH24:MI:SS')",

                                                 dtpDesde.Value.ToString(

    "MM/dd/yyyy"),

                                                 dtpHasta.Value.ToString(

    "MM/dd/yyyy"));

                    }

                   

    OracleCommandcommand = newOracleCommand(sql, conn);

                   

    OracleDataAdapteradapter = newOracleDataAdapter(command);

                    adapter.Fill(ds);

                    dgvListados.DataSource = ds.Tables[0];

                    dgvListados.Sort(dgvListados.Columns[

    "Servicio"], ListSortDirection.Ascending);

                    conn.Close();

                    lblTotalListados.Text =

    Convert.ToString(ds.Tables[0].Rows.Count);

                }

               

    catch(Exceptiona)

                {

                   

    MessageBox.Show("No Conectado "+ a);

                }

            }

           

           


           

    privateDTPeticionesTraspasaDatos()

            {

               


               

    DTPeticionespeticiones = newDTPeticiones();

               


               

    for(inti = 0; ds.Tables[0].Rows.Count > i; i++)

                {

                   

    DTPeticiones.DataTable1Rowfila = peticiones.DataTable1.NewDataTable1Row();

                    fila.Nombre = ds.Tables[0].Rows[i][

    "Nombre"].ToString();

                    fila.Apellido = ds.Tables[0].Rows[i][

    "Apellido"].ToString();

                    fila.Petición = ds.Tables[0].Rows[i][

    "Petición"].ToString();

                    fila.Urgente = ds.Tables[0].Rows[i][

    "Urgente"].ToString();

                    fila.Servicio = ds.Tables[0].Rows[i][

    "Servicio"].ToString();

                   


                    peticiones.DataTable1.AddDataTable1Row(fila);

                }

               

    returnpeticiones;

            }

       

           

    privatevoidbtnReporte_Click(objectsender, EventArgse)

            {

               


               


               

    DTPeticionesDatosEmp = newDTPeticiones();

                DatosEmp = TraspasaDatos();

               


                Presentacion.

    FVisorMiVisor = newPresentacion.FVisor(DatosEmp);

                MiVisor.Show();

            }

    Aquí e formulario donde esta el Crystal Report

    public

    partialclassFVisor: Form


        {

    DTPeticionesMisDatos;

           

    publicFVisor()

            {

                InitializeComponent();

            }

           

    publicFVisor(DTPeticionesDatos)

            {

                InitializeComponent();

               


                MisDatos = Datos;

            }

           

    privatevoidFVisor_Load(objectsender, EventArgse)

            {

               


                Presentacion.

    CrystalReport1Informe = newPresentacion.CrystalReport1();

               


                Informe.SetDataSource(MisDatos);

               


                crystalReportViewer1.ReportSource = Informe;

            }  

        }

    }

    sábado, 23 de julio de 2016 11:28

Todas las respuestas

  • No queda muy claro dónde se pueden estar perdiendo los datos. Aparentemente, los carga btnReporte_Click llamando a TraspasaDatos, que a su vez los lee desde una variable llamada ds, que no se ve dónde está declarada. Presumiblemente, ds se carga antes desde btnTotalPelis_Click, que por supuesto podría no cargar nada en caso de que no se cumpla el where de las sentencias que tiene dentro. O podría ser que la variable ds se perdiese entre medias de la llamada al primer click y la del otro click, por ejemplo, si fuese una variable local del formulario y entre medias se hiciese un "new" del mismo. Todo eso no se ve en el código que has mostrado. Mi recomendación sería que lo ejecutes con el debugger, pongas puntos de ruptura, y sigas la ejecución paso a paso examinando las variables en cada uno de esos pasos hasta encontrar dónde es exactamente el sitio en el que no sigue el camino que pensabas que tenía que seguir, o una de las variables no tiene el valor que creías que debía tener. En ese momento, fíjate en la línea exacta y los datos exactos que tienes en las variables, y si no eres capaz de deducir a partir de ello cuál es el error, danos aquí toda esa información para que podamos ayudarte.
    sábado, 23 de julio de 2016 13:17
  • Gracias por la respuesta.

    El dataset lo tengo declarado al prncipio de la clase. Cuando ejecuto la consulta me rellena un datagridview perfectamente. Lo que no encuentro el motivo de porque no me sale el reporte con los datos. Estoy empezando con esto de la programación y la verdad es que igual algo se me esta escapando.

    sábado, 23 de julio de 2016 13:58
  • [...] Lo que no encuentro el motivo de porque no me sale el reporte con los datos. Estoy empezando con esto de la programación y la verdad es que igual algo se me esta escapando.

    Efectivamente, algo se debe estar escapando, pero no es evidente a simple vista. De ahí la insistencia de que lo ejecutes paso por paso hasta encontrar la línea exacta en la que no está llegando lo que tiene que llegar. Si no sabes usar el debugger, apréndelo. Aunque te cueste algo de esfuerzo, merece realmente la pena invertir tiempo en ello, ya que te resolverá en el futuro incontables problemas y te ahorrará muchísimo tiempo cuando estés tratando de hacer funcionar tus programas.
    sábado, 23 de julio de 2016 15:43