none
Calcular totales y rellenar en datagrid RRS feed

  • Pregunta

  • Buenos Días amigos

    tengo una pregunta, necesito leer los datos de una tabla y calcular el total 

    Me explico

    Tengo esta tabla

    Como pueden ver tengo el cliente 0 que compra varias veces el mismo producto puede ser en la misma y distinta fecha

    Me gustaría agrupar por productos y sumar la cantidad de veces que compro en una determinada fecha

    este es el codigo

      private DataTable GetDataTable()
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("fechaventa");
                dt.Columns.Add("cantidad");
                dt.Columns.Add("cliente");
                dt.Columns.Add("vendedor");
                dt.Columns.Add("producto");
                dt.Columns.Add("Fecha_C");
                dt.Columns.Add("Fecha_M");
                dt.Columns.Add("Total_Comprado");
                return dt;
            }
    

     private void consultar2()
            {
    
                using (MySqlConnection cnrecoge = new MySqlConnection(CadenaConexionNAV))
                {
                    using (MySqlCommand cmdD = new MySqlCommand())
                    {
                        cmdD.Connection = cnrecoge;
                        cnrecoge.Open();
    
                        string queryy = @"select * from clientes_productos limit 1000";
    
                        cmdD.CommandType = CommandType.Text;
                        cmdD.CommandTimeout = 1000;
                        cmdD.CommandText = queryy;
    
                       MySqlDataAdapter dadetalle = new MySqlDataAdapter(queryy, CadenaConexionNAV);
    
                        DataTable dDetalle = new DataTable();
                        dadetalle.SelectCommand = cmdD;
                        dadetalle.Fill(dDetalle);
                        cnrecoge.Close();
                        DataTable dtdetalle = GetDataTable();
    
                        foreach (DataRow row in dDetalle.Rows)
                        {
                            producto = (row[5].ToString());
                            cliente = (row[3].ToString());
                            fecha = Convert.ToDateTime((row[1]));
                            cantidad = Convert.ToDecimal((row[2]));
                            vendedor = (row[4].ToString());
    
                        }
    
                        this.dataGridView1.DataSource = dDetalle;
    
                    }

    Me podrías ayudar por favor

    Saludos


    ruben

    lunes, 3 de junio de 2019 9:42

Todas las respuestas

  • hola

    Para lograr lo que mencionas tienes que usar el "GROUP BY" no se porque lo resuelves desde codigo iterando si puede resolverlo el sql

    SELECT producto,
                SUM(cantidad) as cantidad,
                vendedor,
                cliente
    FROM clientes_productos
    GROUP BY producto, vendedor, cliente

    estudia un poco de sql y veras que se resuelve directo en la consulta

    lo que si no podras mostrar la fecha salvo que quizas el aplique un MAX(Fecha_Venta) o algo asi

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 3 de junio de 2019 12:59