none
graficar los datos de una consulta RRS feed

  • Pregunta

  • Hola, buen dia a todos.

    Tengo una consulta.

    Tengo un query el cual me trae el mes y los datos correspondientes de la consulta que es la siguiente...

    MES               UAP      VALOR

    Agosto          UAP1    1200
    Agosto          UAP2    700
    Agosto          UAP3    800
    Agosto          UAP4    1000
    Septiembre    UAP1    1500
    Septiembre    UAP2    500
    Septiembre    UAP3    400
    Septiembre    UAP4    500


    El cual quiero graficar de la siguiente manera

    arriba de cada mes por ejemplo agosto se muestre las 4 barras uap1, uap2, uap3, uap4 con sus respectivos valores graficados.

     3 2  1    2 3  1 

     |              |

     |  |        |  |         

     |  |   |    |  |  |                

    agosto  Septiembre    

    lo que quiero hacer es que al momento de realizar la consulta

    MES               UAP      VALOR

    Agosto          UAP1    1200
    Agosto          UAP2    700
    Agosto          UAP3    800
    Agosto          UAP4    1000
    Septiembre    UAP1    1500
    Septiembre    UAP2    500
    Septiembre    UAP3    400
    Septiembre    UAP4    500

    Los resultados de la consulta se grafiquen con sus respectivos nombre y graficas.

    El nombre de el mes va acompañado de las 4 uap y cada uap corresponde un valor:

    ejemplo

    agosto = 1200 uap1 700 uap2 800 uap3 1000 uap4

    CODIGO:

    public GraficaPPMS()
            {
               InitializeComponent();
              Average();
               UAP();
               UAP2();
                OverallTarget();
            }
            

            private void GraficaPPMS_Load(object sender, EventArgs e)
            {
              
            }

            public void Average()
            {
                string[] UAPS = new string[4];
                int[] datos = new int[4];

                con.Open();
                SqlCommand cmd = new SqlCommand("SELECT distinct UAP as AVERAGE, SUM(DUAP)/COUNT(DISTINCT MONTH(FECHA))AS AVERAGE FROM [PPMS VW] GROUP BY UAP ", con);
                SqlDataReader leer = cmd.ExecuteReader();

                int contador = 0;

                while (leer.Read())
                {
                    UAPS[contador] = leer.GetString(0);
                    datos[contador] = leer.GetInt32(1);
                    contador++;
                }
                leer.Close();
              
                for (int i = 0; i < UAPS.Count(); i++)
                {
                    //Series series1 = new Series();
                    Series series1 = chart1.Series.Add(UAPS[i]);
                    series1.Points.AddXY("AVERAGE", datos[i]);
                    series1.Label = datos[i].ToString();
                    chart1.ChartAreas[0].AxisX.LabelStyle.Angle = -45;

                }
                con.Close();
               

            }

            public void UAP()
                {

                string[] mes = new string[4];
                string[] UAP = new string[4];
                int[] total = new int[4];


                con.Open();
                SqlCommand cmd = new SqlCommand("SELECT CASE WHEN DATEPART(MONTH, FECHA) = 1 THEN 'ENERO' WHEN DATEPART(MONTH, FECHA) = 2 THEN 'FEBRERO' WHEN DATEPART(MONTH, FECHA) = 3 THEN 'MARZO' WHEN DATEPART(MONTH, FECHA) = 4 THEN 'ABRIL' WHEN DATEPART(MONTH, FECHA) = 5 THEN 'MAYO' WHEN DATEPART(MONTH, FECHA) = 6 THEN 'JUNIO' WHEN DATEPART(MONTH, FECHA) = 7 THEN 'JULIO'   WHEN DATEPART(MONTH, FECHA) = 8 THEN 'AGOSTO' WHEN DATEPART(MONTH, FECHA) = 9 THEN 'SEPTIEMBRE' WHEN DATEPART(MONTH, FECHA) = 10 THEN 'OCTUBRE' WHEN DATEPART(MONTH, FECHA) = 11 THEN 'NOVIEMBRE' WHEN DATEPART(MONTH, FECHA) = 12 THEN 'DICIEMBRE' END AS MES, UAP, SUM(DUAP) AS TOTAL FROM[PPMS VW] WHERE MONTH(FECHA) = 8 GROUP BY UAP, DATEPART(MONTH, FECHA)", con);
                SqlDataReader leer = cmd.ExecuteReader();

                int contador = 0;

                while (leer.Read())
                {
                    mes[contador] = leer.GetString(0);
                    UAP[contador] = leer.GetString(1);
                    total[contador] = leer.GetInt32(2);
                    contador++;
                }
                leer.Close();

                for (int i = 0; i <mes.Count(); i++)
                {
                    Series serie2 = new Series();
                    chart1.Series[i].Points.AddXY(mes[i], total[i]);
                    serie2.Label = total[i].ToString();
                    chart1.ChartAreas[0].AxisX.LabelStyle.Angle = -45;
                }
                con.Close();
            }

            public void UAP2()
            {

                string[] mes = new string[4];
                string[] uap = new string[4];
                int[] total = new int[4];


                con.Open();
                SqlCommand cmd = new SqlCommand("SELECT CASE WHEN DATEPART(MONTH, FECHA) = 1 THEN 'ENERO' WHEN DATEPART(MONTH, FECHA) = 2 THEN 'FEBRERO' WHEN DATEPART(MONTH, FECHA) = 3 THEN 'MARZO' WHEN DATEPART(MONTH, FECHA) = 4 THEN 'ABRIL' WHEN DATEPART(MONTH, FECHA) = 5 THEN 'MAYO' WHEN DATEPART(MONTH, FECHA) = 6 THEN 'JUNIO' WHEN DATEPART(MONTH, FECHA) = 7 THEN 'JULIO'   WHEN DATEPART(MONTH, FECHA) = 8 THEN 'AGOSTO' WHEN DATEPART(MONTH, FECHA) = 9 THEN 'SEPTIEMBRE' WHEN DATEPART(MONTH, FECHA) = 10 THEN 'OCTUBRE' WHEN DATEPART(MONTH, FECHA) = 11 THEN 'NOVIEMBRE' WHEN DATEPART(MONTH, FECHA) = 12 THEN 'DICIEMBRE' END AS MES, UAP, SUM(DUAP) AS TOTAL FROM[PPMS VW] WHERE MONTH(FECHA) = 9 GROUP BY UAP, DATEPART(MONTH, FECHA)", con);
                SqlDataReader leer = cmd.ExecuteReader();

                int contador = 0;

                while (leer.Read())
                {
                    mes[contador] = leer.GetString(0);
                    uap[contador] = leer.GetString(1);
                    total[contador] = leer.GetInt32(2);
                    contador++;
                }
                leer.Close();
              
                for (int i = 0; i < total.Length; i++)
                {
                    
                    chart1.Series[i].Points.AddXY(mes[i], total[i]);
                    chart1.ChartAreas[0].AxisX.LabelStyle.Angle = -45;

                }
                con.Close();
            }

            public void OverallTarget()
            {
                int[] datos1 = new int[1];
                string[] mes = new string[0];
                int[] datos2 = new int[1];

                con.Open();
                SqlCommand cmd = new SqlCommand("SELECT SUM(DISTINCT(OVERALL))/COUNT(distinct(DATENAME(MONTH,[FECHA]))) AS OVERALLAVERAGA FROM [PPMS VW]", con);
                SqlDataReader leer = cmd.ExecuteReader();
                
                
              
               

                int contador = 0;
                while (leer.Read())
                {
                    datos1[contador] = leer.GetInt32(0);

                   
                    contador++;
                  
                }
                leer.Close();
                
                leer.Close();

                //SERIE
                Series series4 = chart1.Series.Add("Overall");
                series4.ChartType = SeriesChartType.Line;
                series4.Color = Color.Green;
                series4.XValueType = ChartValueType.Int32;
                
                ////MARCADOR DIAMANTE
                series4.MarkerStyle = MarkerStyle.Circle;
                series4.MarkerColor = Color.Red;
                int x = 1;
                foreach (float v in datos1)
                {
                    series4.Points.AddY(v);
                    
                }
                for (int i = 0; i < datos1.Count(); i++)
                {
                  
                    series4.Label = datos1[i].ToString();
                }
                con.Close();


            }

    Gracias desde ya

    viernes, 27 de septiembre de 2019 20:20