none
Usar MSChart para criar um gráfico agrupado RRS feed

  • Pergunta

  • Usei o código abaixo para criar um gráfico com agrupamento por mês

    <private void MontaGraficoGeral()
          {
                DateTime data = new DateTime();
                string sql = "";
                string ano = "";
                string mesSQL = "";
                string sSQL = "";
                int anoAtual = 0;
                int anoInicial = 0;
                string connStringSQL ="Data Source=BANCO;Initial Catalog=CONTROLE;Persist Security Info=True;User ID=;Password=";
                DataTable result = new DataTable();
                double plotaY1 = 0;
                double plotaY2 = 0;
                data = DateTime.Now;
                anoAtual = data.Year;
                anoInicial = anoAtual - 2;

                sSQL = "SELECT SUM(FATURA.VALOR) AS VALOR, CASE WHEN LEFT(CENTROCUSTO.CCDESCR, 3) = 'AJA' THEN 'J' WHEN LEFT(CENTRO_CUSTO.CCDESCR, 3) = 'ALO' THEN 'L' WHEN LEFT(CENTRO_CUSTO.CCDESCR, 3) = 'APA' THEN 'P' WHEN LEFT(CENTRO_CUSTO.CCDESCR, 3) = 'CON' THEN 'PA' WHEN LEFT(CENTRO_CUSTO.CCDESCR, 3) = 'SO' THEN 'S' END AS CCUSTO, CASE WHEN FATURA.MES = '01' THEN 'Janeiro' WHEN FATURA.MES = '02' THEN 'Fevereiro' WHEN FATURA.MES = '03' THEN 'Março' WHEN FATURA.MES = '04' THEN 'Abril' WHEN FATURA.MES = '05' THEN 'Maio' WHEN FATURA.MES = '06' THEN 'Junho' WHEN FATURA.MES = '07' THEN 'Julho' WHEN FATURA.MES = '08' THEN 'Agosto' WHEN FATURA.MES = '09' THEN 'Setembro' WHEN FATURA.MES = '10' THEN 'Outubro' WHEN FATURA.MES = '11' THEN 'Novembro' WHEN FATURA.MES = '12' THEN 'Dezembro' END AS MES FROM FATURA INNER JOIN CHI ON FATURA.ID = CHI.ID INNER JOIN LISTA ON CHI.ID = LISTA.ID INNER JOIN CENTROCUSTO ON LISTA.CCUSTO_ID = CENTROCUSTO.CCUSTO_ID WHERE (FATURA.ANO = '2012') GROUP BY LEFT(CENTROCUSTO.CCDESCR, 3), FATURA.MES";

                using (SqlConnection conn = new SqlConnection(connStringSQL))
                {
                      using (SqlCommand cmd = new SqlCommand())
                      {
                            conn.Open();
                            cmd.CommandText = sSQL;
                            cmd.Connection = conn;
                            SqlDataReader dr;
                            dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                            result.Load(dr);
                            dr = null;
                      }
                }

                Chart1.Series.Add("J");
                Chart1.Series.Add("L");
                Chart1.Series.Add("P");
                Chart1.Series.Add("PA");
                Chart1.Series.Add("S");

               
                for(int ind = 0; ind < result.Rows.Count; ind ++)
                {
                      plotaY1 = Convert.ToInt64(result.Rows[ind]["VALOR"]);
                      if(result.Rows[ind]["CCUSTO"].Equals("J"))
                      {
                            Chart1.Series["J"].Points.AddY(plotaY1);
                            Chart1.Series["J"].XValueMember = "MES";
                            Chart1.Series["J"].YValueMembers = "VALOR";
                            Chart1.Series["J"].IsValueShownAsLabel = true;
                      }
                      else if(result.Rows[ind]["CCUSTO"].Equals("L"))
                      {
                            Chart1.Series["L"].Points.AddY(plotaY1);
                            Chart1.Series["L"].XValueMember = "MES";
                            Chart1.Series["L"].YValueMembers = "VALOR";
                            Chart1.Series["L"].IsValueShownAsLabel = true;
                      }
                      else if(result.Rows[ind]["CCUSTO"].Equals("P"))
                      {
                            Chart1.Series["P"].Points.AddY(plotaY1);
                            Chart1.Series["P"].XValueMember = "MES";
                            Chart1.Series["P"].YValueMembers = "VALOR";
                            Chart1.Series["P"].IsValueShownAsLabel = true;
                      }
                      else if(result.Rows[ind]["CCUSTO"].Equals("PA"))
                      {
                            Chart1.Series["PA"].Points.AddY(plotaY1);
                            Chart1.Series["PA"].XValueMember = "MES";
                            Chart1.Series["PA"].YValueMembers = "VALOR";
                            Chart1.Series["PA"].IsValueShownAsLabel = true;
                      }
                      else if(result.Rows[ind]["CCUSTO"].Equals("S"))
                      {
                            Chart1.Series["S"].Points.AddY(plotaY1);
                            Chart1.Series["S"].XValueMember = "MES";
                            Chart1.Series["S"].YValueMembers = "VALOR";
                            Chart1.Series["S"].IsValueShownAsLabel = true;
                      }
                }

                Chart1.DataSource = result;
               
                string TipoGrafico = "Custo Mensal";
                string TituloX = "Meses";
                string TituloY = "Valor";

                Chart1.Titles.Add(TipoGrafico);
                Chart1.ChartAreas["ChartArea1"].AxisX.Title = "Mês";
                Chart1.ChartAreas["ChartArea1"].AxisX.TitleForeColor = Color.Blue;

                Chart1.ChartAreas["ChartArea1"].AxisX.Interval = 1;

                Chart1.Series["J"].ChartType = SeriesChartType.Column;
                Chart1.Series["L"].ChartType = SeriesChartType.Column;
                Chart1.Series["P"].ChartType = SeriesChartType.Column;
                Chart1.Series["PA"].ChartType = SeriesChartType.Column;
                Chart1.Series["S"].ChartType = SeriesChartType.Column;

                // define as margens
                Chart1.ChartAreas["ChartArea1"].AxisX.IsMarginVisible = true;

                //define a cor de fundo
                Chart1.ChartAreas["ChartArea1"].BackColor = Color.White;

                //exibe/oculta as linhas dos eixos no corpo do gráfico
                Chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false;
                Chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Enabled = false;

                //efeito visual nas colunas
                Chart1.Series["J"]["DrawingStyle"] = "Emboss";
                Chart1.Series["L"]["DrawingStyle"] = "Emboss";
                Chart1.Series["P"]["DrawingStyle"] = "Emboss";
                Chart1.Series["PA"]["DrawingStyle"] = "Emboss";
                Chart1.Series["S"]["DrawingStyle"] = "Emboss";

                //exibe valor de cada coluna
                Chart1.Series["J"].IsValueShownAsLabel = true;
                Chart1.Series["L"].IsValueShownAsLabel = true;
                Chart1.Series["P"].IsValueShownAsLabel = true;
                Chart1.Series["P"].IsValueShownAsLabel = true;
                Chart1.Series["S"].IsValueShownAsLabel = true;

                //exibe a legenda
                Chart1.Legends[0].Enabled = true;

                //monta o grafico na tela
                Chart1.DataBind();

          }/>

    mas o gráfico esta sendo criado conforme abaixo

     

     

    conforme retangulo azul destacando os meses estão se repetindo ao invés de aparecer julho uma vez com 5 series e agosto com 3 series.

    Poderiam me auxliar?

    segunda-feira, 20 de agosto de 2012 17:02

Respostas

  • Segue abaixo o resultado da consulta

    eu estou tentando fazer o gráfico assim  eixo de x mes julho plotar uma série com valor J, L, P, PA, S mes Agosto plotar uma serie J, PA, S e não repetir o mes conforme está acontecendo

    • Marcado como Resposta Julianelli sexta-feira, 24 de agosto de 2012 23:21
    terça-feira, 21 de agosto de 2012 17:15

Todas as Respostas

  • Tem ctza que sua consulta não está vindo errada?

    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC

    terça-feira, 21 de agosto de 2012 16:04
    Moderador
  • Segue abaixo o resultado da consulta

    eu estou tentando fazer o gráfico assim  eixo de x mes julho plotar uma série com valor J, L, P, PA, S mes Agosto plotar uma serie J, PA, S e não repetir o mes conforme está acontecendo

    • Marcado como Resposta Julianelli sexta-feira, 24 de agosto de 2012 23:21
    terça-feira, 21 de agosto de 2012 17:15
  • Consegui resolver.
    sexta-feira, 24 de agosto de 2012 23:22
  • Como você conseguiu amigo?

    Pode me ajudar? Estou com o mesmo problema

    Agradeço desde já

    quinta-feira, 26 de dezembro de 2013 12:40