none
Varias Consultas RRS feed

  • Pregunta

  • Buenas tardes

    Amigos como puedo solucionar esto

                        int sumatorialineasped = 0;
                        int sumatorialineasofi = 0;
                        int sumatorialineasdip = 0;
                        int sumatorialineasweb = 0;
                        int sumatotallineas = 0;
                        #region Calculamos el total de Linea de PED
                        string query_pedidos_vendidos = @"select count(*) as contador
                                        from gestionpedido.poee
                                        inner join txgl.pedidomov on txgl.pedidomov.pedidokey = gestionpedido.poee.pedidokey
                                        where gestionpedido.poee.operador_finaliza =@operador  and gestionpedido.poee.fecha_finaliza >= @fecha_finaliza_desde and gestionpedido.poee.fechapedido < DATE_ADD(@fecha_finaliza_hasta , INTERVAL 1 DAY)
                                        group by gestionpedido.poee.operador_finaliza ";
    
                        MySqlCommand cmd_pedidos_vendidos = new MySqlCommand(query_pedidos_vendidos, cn);
    
                        cmd_pedidos_vendidos.CommandType = CommandType.Text;
                        cmd_pedidos_vendidos.CommandText = query_pedidos_vendidos;
    
                        cmd_pedidos_vendidos.Parameters.AddWithValue("@operador", valor);
                        cmd_pedidos_vendidos.Parameters.AddWithValue("@fecha_finaliza_desde", fecha_desde);
                        cmd_pedidos_vendidos.Parameters.AddWithValue("@fecha_finaliza_hasta", fecha_hasta);
    
    
                        MySqlDataReader reader_pedidos_vendidos = cmd_pedidos_vendidos.ExecuteReader();
    
                        txtpedidosvendidos.Text = "";
    
                        if (reader_pedidos_vendidos.Read())
                        {
    
                           sumatorialineasped = Convert.ToInt32(reader_pedidos_vendidos["contador"]);
                         
    
                        }
                        reader_pedidos_vendidos.Close();
    
                        #endregion
                        #region Calculamos el total de Linea de Oficina
                        string query_pedidos_vendidos2 = @"select count(*) as contador
                                        from gestionpedido.poee
                                        inner join gestionpedido.oficina_detalle on gestionpedido.oficina_detalle.pedidokey = gestionpedido.poee.pedidokey
                                        where gestionpedido.poee.operador_finaliza =@operador  and gestionpedido.poee.fecha_finaliza >= @fecha_finaliza_desde and gestionpedido.poee.fechapedido < DATE_ADD(@fecha_finaliza_hasta , INTERVAL 1 DAY)
                                        group by gestionpedido.poee.operador_finaliza ";
    
                        MySqlCommand cmd_pedidos_vendidos2 = new MySqlCommand(query_pedidos_vendidos2, cn);
    
                        cmd_pedidos_vendidos2.CommandType = CommandType.Text;
                        cmd_pedidos_vendidos2.CommandText = query_pedidos_vendidos2;
    
                        cmd_pedidos_vendidos2.Parameters.AddWithValue("@operador", valor);
                        cmd_pedidos_vendidos2.Parameters.AddWithValue("@fecha_finaliza_desde", fecha_desde);
                        cmd_pedidos_vendidos2.Parameters.AddWithValue("@fecha_finaliza_hasta", fecha_hasta);
    
    
                        MySqlDataReader reader_pedidos_vendidos2 = cmd_pedidos_vendidos2.ExecuteReader();
    
                        txtpedidosvendidos.Text = "";
    
                        if (reader_pedidos_vendidos2.Read())
                        {
    
                            sumatorialineasofi = Convert.ToInt32(reader_pedidos_vendidos2["contador"]);
    
    
                        }
                        reader_pedidos_vendidos2.Close();
                        #endregion
                        #region Calculamos el total de Linea de Web
                        string query_pedidos_vendidos3 = @"select count(*)as contador, gestionpedido.poee.pedidokey
                                        from gestionpedido.poee
                                        inner join gestionpedido.pedidodetalleweb on gestionpedido.pedidodetalleweb.pedidokey = gestionpedido.poee.pedidokey
                                        where gestionpedido.poee.operador_finaliza =@operador  and  fecha_finaliza >= @fecha_finaliza_desde and fecha_finaliza < DATE_ADD(@fecha_finaliza_hasta , INTERVAL 1 DAY)
                                        group by gestionpedido.poee.operador_finaliza";
    
                        MySqlCommand cmd_pedidos_vendidos3 = new MySqlCommand(query_pedidos_vendidos3, cn);
    
                        cmd_pedidos_vendidos3.CommandType = CommandType.Text;
                        cmd_pedidos_vendidos3.CommandText = query_pedidos_vendidos3;
    
                        cmd_pedidos_vendidos3.Parameters.AddWithValue("@operador", valor);
                        cmd_pedidos_vendidos3.Parameters.AddWithValue("@fecha_finaliza_desde", fecha_desde);
                        cmd_pedidos_vendidos3.Parameters.AddWithValue("@fecha_finaliza_hasta", fecha_hasta);
    
    
                        MySqlDataReader reader_pedidos_vendidos3 = cmd_pedidos_vendidos3.ExecuteReader();
    
                        txtpedidosvendidos.Text = "";
    
                        if (reader_pedidos_vendidos3.Read())
                        {
    
                            sumatorialineasweb = Convert.ToInt32(reader_pedidos_vendidos3["contador"]);
    
    
                        }
                        reader_pedidos_vendidos3.Close();
                        #endregion
                        #region Calculamos el total de Linea de Dipo
                        string query_pedidos_vendidos4 = @"select count(*)as contador, gestionpedido.poee.pedidokey
                                        from gestionpedido.poee
                                        inner join gestionpedido.pedidodetalledipo on gestionpedido.pedidodetalledipo.pedidokey = gestionpedido.poee.pedidokey
                                        where gestionpedido.poee.operador_finaliza =@operador  and  fecha_finaliza >= @fecha_finaliza_desde and fecha_finaliza < DATE_ADD(@fecha_finaliza_hasta , INTERVAL 1 DAY)
                                        group by gestionpedido.poee.operador_finaliza ";
    
                        MySqlCommand cmd_pedidos_vendidos4 = new MySqlCommand(query_pedidos_vendidos4, cn);
    
                        cmd_pedidos_vendidos4.CommandType = CommandType.Text;
                        cmd_pedidos_vendidos4.CommandText = query_pedidos_vendidos4;
    
                        cmd_pedidos_vendidos4.Parameters.AddWithValue("@operador", valor);
                        cmd_pedidos_vendidos4.Parameters.AddWithValue("@fecha_finaliza_desde", fecha_desde);
                        cmd_pedidos_vendidos4.Parameters.AddWithValue("@fecha_finaliza_hasta", fecha_hasta);
    
    
                        MySqlDataReader reader_pedidos_vendidos4 = cmd_pedidos_vendidos4.ExecuteReader();
    
                        txtpedidosvendidos.Text = "";
    
                        if (reader_pedidos_vendidos4.Read())
                        {
    
                            sumatorialineasdip = Convert.ToInt32(reader_pedidos_vendidos4["contador"]);
    
    
                        }
                        reader_pedidos_vendidos4.Close();
                        #endregion
                        #region Calculamos el Total de Pedidos Preparados en el Mes
                        string query_pedidos_vendidosmes = @"SELECT COUNT(*) AS cuenta, sum(jinez) as jinez
                                                      FROM poee WHERE operador_finaliza is not null and  devolucion=0 and
                                                      fecha_finaliza >= @fecha_finaliza_desde 
               								          and fecha_finaliza < DATE_ADD(@fecha_finaliza_hasta , INTERVAL 1 DAY) ";
    
    
                        MySqlCommand cmd_pedidos_vendidosmes = new MySqlCommand(query_pedidos_vendidosmes, cn);
    
    
                        cmd_pedidos_vendidosmes.CommandType = CommandType.Text;
                        cmd_pedidos_vendidosmes.CommandText = query_pedidos_vendidosmes;
    
                        cmd_pedidos_vendidosmes.Parameters.AddWithValue("@fecha_finaliza_desde", fecha_desde);
                        cmd_pedidos_vendidosmes.Parameters.AddWithValue("@fecha_finaliza_hasta", fecha_hasta);
    
    
                        MySqlDataReader reader_pedidos_vendidosmes = cmd_pedidos_vendidosmes.ExecuteReader();
    
                        txtpedidosvendidos.Text = "";
    
                        if (reader_pedidos_vendidosmes.Read())
                        {
    
                            txtpedidosvendidos.Text = Convert.ToString(reader_pedidos_vendidosmes["cuenta"]);
                            txttotalpormes.Text = string.Format("{0:C2}", Convert.ToDecimal(reader_pedidos_vendidosmes["jinez"]));
    
    
                        }
                        reader_pedidos_vendidosmes.Close();
                        #endregion
    
                        sumatotallineas = sumatorialineasped + sumatorialineasofi + sumatorialineasdip + sumatorialineasdip + sumatorialineasweb;
                        txttotallineas.Text = "Total de Lineas" + sumatotallineas;

    Necesito hacer varias consultas para calcular las cantidades como se puede apreciar en el codigo

    Hay alguna forma de ejecutarlo mas rapido, tipo por linq el principal es la tabla poee y el se copara con otras tablas detalles. todo esto es para saber las cantidades de lineas de cada tipo de pedido

    saludos


    ruben

    lunes, 5 de diciembre de 2016 17:51

Respuestas

  • hola

    En las dos primeras consultas devuelves un valor simple, porque no usas el ExecuteScalar() ?

    string query_pedidos_vendidos = @"select count(*) as contador
    				from gestionpedido.poee
    				inner join txgl.pedidomov on txgl.pedidomov.pedidokey = gestionpedido.poee.pedidokey
    				where gestionpedido.poee.operador_finaliza =@operador  and gestionpedido.poee.fecha_finaliza >= @fecha_finaliza_desde and gestionpedido.poee.fechapedido < DATE_ADD(@fecha_finaliza_hasta , INTERVAL 1 DAY)
    				group by gestionpedido.poee.operador_finaliza ";
    
    MySqlCommand cmd_pedidos_vendidos = new MySqlCommand(query_pedidos_vendidos, cn);
    
    cmd_pedidos_vendidos.Parameters.AddWithValue("@operador", valor);
    cmd_pedidos_vendidos.Parameters.AddWithValue("@fecha_finaliza_desde", fecha_desde);
    cmd_pedidos_vendidos.Parameters.AddWithValue("@fecha_finaliza_hasta", fecha_hasta);
    
    
    sumatorialineasped = Convert.ToInt32(cmd_pedidos_vendidos.ExecuteScalar());

    ----

    para el resto donde hay varios registros podrias evaluar  usar el UNION para unir los resultados de varias consultas en una sola

    lo unico es que la cantidad de columnas debe ser la misma, en las dos primeras queries por ejemplos devuelves, por ejemplo para las que devuelve el contador y pedidokey

    aunque si tienes algun campo que devuelva el tipo de linea podrias poner este campo en el SELECT y asi hacer una unica query

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 5 de diciembre de 2016 18:22