none
comprobar si esta vacio dataset RRS feed

  • Pregunta

  • Buenos Días

    Como podría ahcer para comprobar si un data set esta vacio

    Ejemplo

    creo una conulta de una tabla de vendedores tiene 33 registro

    crea la columna en el data table, pero si esta vacio no me agrega al data table, pongo mejor los graficos y el códgio para que se entienda

    Aqui la imagen cuando esta vacio y no me agrega a la columna

    Aqui ha vuelto el ciclo y como si tiene datos pues me agrega la columna

    Aqui el códgio

     private void vendedores()
            {
                desde = dateTimePicker1.Value.Date;
                hasta = dateTimePicker2.Value.Date;
                TimeSpan fechadiferencia = hasta - desde;
                int diferenciadias = fechadiferencia.Days;
                if (diferenciadias <= 7)
                {
                    semanas = 1;
                }
                else
                {
                    semanas = fechadiferencia.Days / 7;
                }
                DataTable dtdetalle = GetDataTable();
               
               
                for (int i = 1; i <= semanas; i++)
                {
    
                    MySqlConnection cn3 = new MySqlConnection(sqlconnection);
                    cn3.Open();
    
                    string query1 = @"select bianhao from yewuyuan order by bianhao desc "; //Selecciono la tabla de vendedores
                    MySqlCommand cmd = new MySqlCommand(query1, cn3);
                    MySqlDataReader reader = cmd.ExecuteReader();
    
    
                    dtdetalle.Columns.Add(string.Format("fecha{0}", i), typeof(Int32));
                   
                    fechacalculo = desde.AddDays(7);
                   
                    while (reader.Read())
                    {
                        represen = Convert.ToInt16(reader["bianhao"]);
                        
                        using (MySqlConnection cn = new MySqlConnection(sqlconnection))
                        {
                            cn.Open();
                            
                            string queryvendedor = @"Select p.yewuyuanid, count(*) as cantidad
    						from pedidolist p
    						where  p.riqi between  @desde  and  DATE_ADD(@hasta, INTERVAL 1 DAY)
                            and p.yewuyuanid = @representante
    						group by p.yewuyuanid 
    						order by p.riqi, p.yewuyuanid "; //Selecciono la tabla de vendedores
                            
                            using (MySqlCommand cmdD = new MySqlCommand(queryvendedor, cn))
                            {
                                
                                cmdD.Parameters.Clear();
                                cmdD.Parameters.AddWithValue("@desde", desde);
                                cmdD.Parameters.AddWithValue("@hasta", fechacalculo);
                                cmdD.Parameters.AddWithValue("@representante", represen);
    
                                MySqlDataAdapter dadetalle = new MySqlDataAdapter(cmdD);
    
                                DataTable dDetalle = new DataTable();
                                dadetalle.Fill(dDetalle);
    
                                foreach (DataRow dr in dDetalle.Rows)
                                {
                                    DataRow row = dtdetalle.Rows.Cast<DataRow>()
                                   .FirstOrDefault(r => (string)r["bianhao"] == (string)dr["yewuyuanid"]);
                                    
                                    if (row == null)
                                    {
                                        DataRow newRow = dtdetalle.NewRow();
    
                                        newRow["bianhao"] = dr["yewuyuanid"];
                                        newRow[i] = dr["cantidad"];
                                        dtdetalle.Rows.Add(newRow);
                                    }
                                    else
                                    {
                                        row[i] = dr["cantidad"];
                                    }
                                }
                                
                            }
                        }
                    }
                    reader.Close();
                    desde = desde.AddDays(7);
                }
             
                this.dataGridView1.DataSource = dtdetalle;
            }

    Saludos cordiales


    ruben

    viernes, 4 de marzo de 2016 10:52

Respuestas

  • hola

    pero eso no lo resuelves desde codigo .net sino desde la query sql que estas definiendo

    si el vendedor no tiene ventas deberias hacer que el sql que defines igual o devuelva como resultado, sino se carga en el datatable es porque la query no devuelve ese registro

    revisa la consulta que ejecutas y valida porque no se devuelve ningun registro

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 4 de marzo de 2016 11:53

Todas las respuestas

  • hola

    para comprobar si esta vacio solo usarias

    if(dDetalles.Rows.Count == 0){
    
       //no hay registros
    
    }

    asi de simple

    igual no entendi en la explicacion para que necesitas validarlo si con el foreach de als rows sino hay nada simplemente no mostrara registros

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 4 de marzo de 2016 11:05
  • Hola Leandro

    Ese es el tema si no hay nada, el tema es ta que por ejemplo existe el vendedor 98 pues el no vendio nada

    pero igual debería de cargar en el datagrid a ese vendedor en la primera columna y alado en su fecha poner 0

    por eso creo que debo de comprobar si esta vacio y si es vacio igual cargar ese nombre en el data grid

    saludos


    ruben

    viernes, 4 de marzo de 2016 11:26
  • No me funciona Leandro, o creo que lo estoy colocando mal

     foreach (DataRow dr in dDetalle.Rows)
                                {
                                    if (dDetalle.Rows.Count == 0)
                                    {
                                        DataRow newRow = dtdetalle.NewRow();
                                        newRow["bianhao"] = dr["yewuyuanid"];
                                        newRow[i] = 0;//dr["cantidad"];
                                        dtdetalle.Rows.Add(newRow);
    
                                        //no hay registros
    
                                    }
                                    DataRow row = dtdetalle.Rows.Cast<DataRow>()
                                   .FirstOrDefault(r => (string)r["bianhao"] == (string)dr["yewuyuanid"]);
                                    
                                    if (row == null)
                                    {
                                        DataRow newRow = dtdetalle.NewRow();
    
                                        newRow["bianhao"] = dr["yewuyuanid"];
                                        newRow[i] = dr["cantidad"];
                                        dtdetalle.Rows.Add(newRow);
                                    }
                                    else
                                    {
                                        row[i] = dr["cantidad"];
                                    }
                                }
                                

    Por que cuando hace esto

    foreach (DataRow dr in dDetalle.Rows)

    automáticamente sale de el

    saludos


    ruben

    viernes, 4 de marzo de 2016 11:35
  • hola

    pero eso no lo resuelves desde codigo .net sino desde la query sql que estas definiendo

    si el vendedor no tiene ventas deberias hacer que el sql que defines igual o devuelva como resultado, sino se carga en el datatable es porque la query no devuelve ese registro

    revisa la consulta que ejecutas y valida porque no se devuelve ningun registro

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 4 de marzo de 2016 11:53
  • Leandro ya me funciona ya me carga bien lo único que todos los vendedores que no han echo pedido se vuelve a crear abajo mas abajo por favor ayúdame mira las imágenes y el código que te agrego

    Este bien 

    Ahora viene los códigos de representantes que no vendieron carga en otra linea en blanco

    Este es el códgio

            private void vendedores()
            {
                desde = dateTimePicker1.Value.Date;
                hasta = dateTimePicker2.Value.Date;
                TimeSpan fechadiferencia = hasta - desde;
                int diferenciadias = fechadiferencia.Days;
                if (diferenciadias <= 7)
                {
                    semanas = 1;
                }
                else
                {
                    semanas = fechadiferencia.Days / 7;
                }
                DataTable dtdetalle = GetDataTable();
               
               
                for (int i = 1; i <= semanas; i++)
                {
    
                    MySqlConnection cn3 = new MySqlConnection(sqlconnection);
                    cn3.Open();
    
                    string query1 = @"select bianhao from yewuyuan order by bianhao desc "; //Selecciono la tabla de vendedores
                    MySqlCommand cmd = new MySqlCommand(query1, cn3);
                    MySqlDataReader reader = cmd.ExecuteReader();
    
    
                    dtdetalle.Columns.Add(string.Format("fecha{0}", i), typeof(Int32));
                   
                    fechacalculo = desde.AddDays(7);
                   
                    while (reader.Read())
                    {
                        represen = Convert.ToInt16(reader["bianhao"]);
                        
                        using (MySqlConnection cn = new MySqlConnection(sqlconnection))
                        {
                            cn.Open();
                            
                            string queryvendedor = @"Select p.yewuyuanid, count(*) as cantidad
    						from pedidolist p
    						where  p.riqi between  @desde  and  DATE_ADD(@hasta, INTERVAL 1 DAY)
                            and p.yewuyuanid = @representante
    						group by p.yewuyuanid 
    						order by p.riqi, p.yewuyuanid "; //Selecciono la tabla de vendedores
                            
                            using (MySqlCommand cmdD = new MySqlCommand(queryvendedor, cn))
                            {
                                
                                cmdD.Parameters.Clear();
                                cmdD.Parameters.AddWithValue("@desde", desde);
                                cmdD.Parameters.AddWithValue("@hasta", fechacalculo);
                                cmdD.Parameters.AddWithValue("@representante", represen);
    
                                MySqlDataAdapter dadetalle = new MySqlDataAdapter(cmdD);
    
                                DataTable dDetalle = new DataTable();
                                dadetalle.Fill(dDetalle);
    
                                if (dDetalle.Rows.Count == 0)
                                {
                                    DataRow newRow = dtdetalle.NewRow();
                                    newRow["bianhao"] = represen;
                                    newRow[i] = 0;//dr["cantidad"];
                                    dtdetalle.Rows.Add(newRow);
    
                                }
                                else if (dDetalle.Rows.Count != 0)
                                {
                                    foreach (DataRow dr in dDetalle.Rows)
                                    {
                                        DataRow row = dtdetalle.Rows.Cast<DataRow>()
                                        .FirstOrDefault(r => (string)r["bianhao"] == (string)dr["yewuyuanid"]);
                                        if (row == null)
                                        {
                                            DataRow newRow = dtdetalle.NewRow();
                                            newRow["bianhao"] = dr["yewuyuanid"];
                                            newRow[i] = dr["cantidad"];
                                            dtdetalle.Rows.Add(newRow);
                                        }
                                        else
                                        {
                                            row[i] = dr["cantidad"];
                                        }
                                    }
                                }
                                
                            }
                        }
                    }
                    reader.Close();
                    desde = desde.AddDays(7);
                }
             
                this.dataGridView1.DataSource = dtdetalle;
            }

    Muchas Gracias Leandro


    ruben

    viernes, 4 de marzo de 2016 12:01