Principales respuestas
comprobar si esta vacio dataset

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
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- Propuesto como respuesta Karen MalagónModerator viernes, 4 de marzo de 2016 18:38
- Marcado como respuesta José De AlvaModerator miércoles, 23 de marzo de 2016 2:46
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- Propuesto como respuesta Karen MalagónModerator viernes, 4 de marzo de 2016 18:38
-
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
-
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
-
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- Propuesto como respuesta Karen MalagónModerator viernes, 4 de marzo de 2016 18:38
- Marcado como respuesta José De AlvaModerator miércoles, 23 de marzo de 2016 2:46
-
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