none
Configurar grafico RRS feed

  • Pregunta

  • Buenos dias, llevo ya unos dias con este tema, bueno explico, tengo una consulta mysql que e devuelve unos datos y me los muestra a un data grid, bien, ahora quiero que esos datos mostrarlos en un grafico, lo eh intentado de mil formas pero no hago la mas minima idea, alguien me puede echar una mano?. dejo el codigo de como lo tengo hasta ahora. aunque este mal, se puede observar que es lo que hago, todo mal pero bueno,jeje. muchas gracias

    private void conexion()
            {
                DataTable dt = new DataTable();
                DataColumn dc;
    
                dc = new DataColumn();
                dc.ColumnName = "fecha";
                dt.Columns.Add(dc);
                dc = new DataColumn();
                dc.ColumnName = "rcc.ea_impotada-rcc2.ea_importada";
                dt.Columns.Add(dc);
    
                DataRow dr;
                dr = dt.NewRow();
                dr["fecha"] = "";
                dr["rcc.ea_impotada-rcc2.ea_importada"] = "";
                dt.Rows.Add(dr);
    
                double plotY = 0;
                if (chart1.Series["CC horaria"].Points.Count > 0)
                {
                    plotY = chart1.Series["CC horaria"].Points[chart1.Series["CC horaria"].Points.Count - 1].YValues[0];
                }
    
                for (int pointIndex = 0; pointIndex < dt.Rows.Count; pointIndex++)
                {
                    plotY = Convert.ToDouble(dt.Rows[pointIndex]["rcc.ea_impotada-rcc2.ea_importada"]);
                    chart1.Series["CC horaria"].Points.AddY(plotY);
                }
    
                chart1.DataSource = dt;
                chart1.Series["CC horaria"].XValueMember = "fecha";
                chart1.Series["CC horaria"].YValueMembers = "rcc.ea_impotada-rcc2.ea_importada";
                chart1.DataBind();
              
                using (MySqlConnection cnn = new MySqlConnection(connectionstring))
                {
    
                    string query = @"select rcc.fecha,rcc.ea_importada-rcc2.ea_importada                                
                            FROM reg_curva_carga rcc 
                            INNER JOIN reg_curva_carga rcc2 ON rcc.id_contador=rcc2.id_contador 
                            WHERE rcc.id_contador = ?contador 
                            AND rcc.fecha = date_add(rcc2.fecha,interval 1 hour) 
                            AND date(rcc.fecha) = ?fecha";
    
                    MySqlCommand cmd = new MySqlCommand(query, cnn);
                    cmd.Parameters.AddWithValue("contador", Convert.ToInt32(TextBox.Text));
                    cmd.Parameters.AddWithValue("fecha", Convert.ToDateTime(DateTime.Text));
    
                    MySqlDataAdapter da = new MySqlDataAdapter(cmd);
    
                    da.Fill(dt);
    
    
                }
    
    
                DataGridView1.DataSource = dt;  //aqui se  cargan los valroes en la grilla
            }

    jueves, 18 de febrero de 2010 8:49

Respuestas

  • hola

    pero por el codigo que estas suando no creo que peudas ver nada en el grafico
    o sea la primer seccion del codigo estas creando un dataset programaticamente pero no le cargas info al mismo
    solo estas creando un registro con los valores en blanco

    solo al datagridview  le asignas la info proveniente de la consulta, pero no al grafico


    private void conexion()
    {
        DataTable dt = new DataTable();

        using (MySqlConnection cnn = new MySqlConnection(connectionstring))
        {

            string query = @"select rcc.fecha,rcc.ea_importada-rcc2.ea_importada as importada                              
                    FROM reg_curva_carga rcc
                    INNER JOIN reg_curva_carga rcc2 ON rcc.id_contador=rcc2.id_contador
                    WHERE rcc.id_contador = ?contador
                    AND rcc.fecha = date_add(rcc2.fecha,interval 1 hour)
                    AND date(rcc.fecha) = ?fecha";

            MySqlCommand cmd = new MySqlCommand(query, cnn);
            cmd.Parameters.AddWithValue("contador", Convert.ToInt32(TextBox.Text));
            cmd.Parameters.AddWithValue("fecha", Convert.ToDateTime(DateTime.Text));

            MySqlDataAdapter da = new MySqlDataAdapter(cmd);

            da.Fill(dt);
        }

        DataGridView1.DataSource = dt;  //aqui se  cargan los valroes en la grilla

       
        double plotY = 0;
        if (chart1.Series["CC horaria"].Points.Count > 0)
        {
            plotY = chart1.Series["CC horaria"].Points[chart1.Series["CC horaria"].Points.Count - 1].YValues[0];
        }

        for (int pointIndex = 0; pointIndex < dt.Rows.Count; pointIndex++)
        {
            plotY = Convert.ToDouble(dt.Rows[pointIndex]["importada"]);
            chart1.Series["CC horaria"].Points.AddY(plotY);
        }

        chart1.DataSource = dt;
        chart1.Series["CC horaria"].XValueMember = "fecha";
        chart1.Series["CC horaria"].YValueMembers = "importada";
        chart1.DataBind();
       
    }



    como veras move la seccion de codigo que configura el grafico despues de obtener los datos en el datatable

    - ademas use un alias para ese campo que se ve bastante largo

    - una consulta en el grafico porque usas el metodo DataBind() este es suado en aplicaciones web pero no esta en winforms


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 18 de febrero de 2010 12:57