none
Meter dos datasets en crystal reports RRS feed

  • Pregunta

  • Hola tengo la siguiente situacion, quiero crear un reporte en crystal reports y en teoria todo esta bien y funciona, pero el reporte sale en blanco no me muestra nada, les pongo imagenes y codigo de como lo estoy haciendo:

    public DataSet HojaRuta(Procesos proceso)
            {
                DSDespies ds = new DSDespies();
                string query = "SELECT NumParte, piezas.Nombre AS Nombre, Proceso1, Descripcion1, Proceso2, Descripcion2, Proceso3, Descripcion3, Proceso4, Descripcion4, Proceso5, Descripcion5, Proceso6, Descripcion6, procesos.Articulo AS Articulo, procesos.Modelo AS Modelo, piezas.Material AS Medida, piezas.Cantidad AS Cantidad FROM procesos inner join piezas on piezas.NumeroParte=procesos.NumParte WHERE procesos.NumParte=@art";
                MySqlCommand comando = new MySqlCommand(query, CNN.Abrir());
                comando.Parameters.AddWithValue("@art", proceso.NumPart);
                MySqlDataAdapter adap = new MySqlDataAdapter(comando);
                adap.Fill(ds.HojaRuta);
                CNN.Cerrar();
    
                return ds;
            }
            public DataSet ImagenHojaRuta(Procesos proceso)
            {
                DSDespies ds = new DSDespies();
                string query = "select Imagen, NumeroParte from imagen where NumeroParte=@id";
                MySqlCommand comando = new MySqlCommand(query, CNN.Abrir());
                comando.Parameters.AddWithValue("@id", proceso.NumPart);
                MySqlDataAdapter adap = new MySqlDataAdapter(comando);
                adap.Fill(ds.Imagen);
                if (ds.Imagen.Rows.Count == 0)
                {
                    string query2 = "select Imagen, NumeroParte from imagen where NumeroParte=99999999";
                    MySqlCommand comando2 = new MySqlCommand(query2, CNN.Abrir());
                    comando.Parameters.AddWithValue("@id", proceso.NumPart);
                    MySqlDataAdapter adap2 = new MySqlDataAdapter(comando);
                    adap2.Fill(ds.Imagen);
                    CNN.Cerrar();
    
                    return ds;
                }
                else
                {
                    return ds;
                }
            }

    estos son los datasets que quiero meter y los relacione asi en el crystal reports

    el rollo es que en un datasets lleno la informacion de una pieza y en el otro su imagen correspondiente, ahora todo funciona porque los datasets tiene  informacion y todo, pero no se muestran en el crystal reports...

    aqui es donde mando llenar lso datasets y los mando al crystal....

    private void hojaDeRutaToolStripMenuItem_Click(object sender, EventArgs e)
            {   
                proces.NumPart = verDespies.CurrentRow.Cells[1].Value.ToString();
                hojaruta.SetDataSource(reporte.HojaRuta(proces));
                hojaruta.SetDataSource(reporte.ImagenHojaRuta(proces));
    
                frmVerReportes frm = new frmVerReportes();
                frm.crystalReportViewer1.ReportSource = hojaruta;
                frm.ShowDialog();
            }
    entonces que podra ser lo que estoy haciendo mal???
    martes, 31 de julio de 2018 16:32

Todas las respuestas

  • using System.Configuration;
    using System.Data.SqlClient;
    
    public class PANTALLA_REG_PROGRAMACION_OFICIAL_HORARIOS_CLASE
    {
        protected ConnectionStringSettings configuracion = ConfigurationManager.ConnectionStrings("Cadenaconexion");
        private SqlConnection Cadenaconexion = new SqlConnection(configuracion.ConnectionString);
    
        private void txttermino_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Return))
            {
                REP_REG_PROGRAMACION_OFICIAL_HORARIOS_CLASES Reporte = new REP_REG_PROGRAMACION_OFICIAL_HORARIOS_CLASES();
                Reporte.SetDataSource(ObtenerDatos_Horarios);
                Reporte.Refresh();
                this.CrystalReportViewer1.ReportSource = Reporte;
            }
        }
    
        private DS_REG_PROGRAMACION_OFICIAL_HORARIOS_CLASES ObtenerDatos_Horarios()
        {
            using (SqlConnection cnn = new SqlConnection(configuracion.ConnectionString))
            {
                using (SqlCommand cmd = cnn.CreateCommand())
                {
                    cmd.CommandText = "select A.Codigo_Clase,A.Seccion_Clase,A.Termino,A.Salon,A.Dias,A.Desde_Hora,A.Hasta_Hora, " + "B.Desde_Semestre_Academico,b.Hasta_Semestre_Academico, " + "B.Desde_Ano_Academico,b.Hasta_Ano_Academico, " + "C.Descripcion_Clase, c.Lab, " + "B.Fecha_Inicio,b.Fecha_Fin,b.Fecha_Inicio_2,B.Fecha_Fin_2, " + "D.Nombre_Emp,D.Apellido_Paterno_Emp, " + "E.Nombre_Institucion,E.Nombre_Recinto,E.Direccion_Postal,E.Pu_Pa_Cod_Postal_Postal, " + "F.Descripcion_Seccion " + "from HORARIOS_CLASE_TABLA A " + "left join TERMINO_ACADEMICO_TABLA B On A.Termino=B.Termino " + "left join CLASES_TABLA C On A.Codigo_Clase=C.Codigo_Clase " + "left join EMPLEADO_TABLA D On A.Profesor=D.Num_Empleado " + "left join ENCABEZADOS_REPORTES_TABLA E On A.Encabezados_Num=E.Numero " + "left join SECCIONES_TABLA F On A.Seccion_Clase=F.Num_Seccion " + "where A.Termino= '" + txttermino.Text + "' ";
                    SqlDataAdapter DA = new SqlDataAdapter(cmd);
                    DS_REG_PROGRAMACION_OFICIAL_HORARIOS_CLASES DS = new DS_REG_PROGRAMACION_OFICIAL_HORARIOS_CLASES();
                    DA.Fill(DS, "HORARIOS_CLASE_TABLA");
                    return DS;
                }
            }
        }
    
        private void PANTALLA_REG_PROGRAMACION_OFICIAL_HORARIOS_CLASE_Load(object sender, EventArgs e)
        {
            txttermino.Clear();
            CrystalReportViewer1.ReportSource = null;
        }
    }
    

    Voy a tratar de explicarte por que no te sale

    1 - Tienes que crear un datasettipado en tu visual studio con todos los nombres de los campos que quieres que salgan en el reporte.

    2 - Luego crear un reporte lo asocias a ese datasettipado que creaste previamente y pones los campos tal y como los quieres ver en el reporte.

    3 - Creas el formulario donde vas a poner el crystalreportviewer y ahi es que pones el codigo con tus consultas

    es importante que instancies tu reporte que creaste tanto como el datasettipado que creaste, con simple codigo puedes verlo sin problemas en un datagridview u otro control que te permita eso, pero crystal report trabaja un poco diferente y creeme amigo que ya lo habia tratado de hacer asi como tu y me rompi la cabeza... exito

    martes, 31 de julio de 2018 21:41