Fórum Grafico de linhas no TChart, estou apanhando feio.. #284307
09/06/2005
0
eu preciso fazer um maldito grafico de vendas por periodo e estou apanhando feio do TChart..
eu preciso fazer um grafico muito simples, que eh de vendas por periodo, ou seja..
o grafico eh assim, o usuario seleciona o intervalo de datas e aih eu monto um grafico onde X eh cada mes no intervalo de datas selecionado e Y o total de vendas de cada produto, aih crio uma serie pra cada produto e coloco no grafico..como vcs viram eh bem simples, nao tem nada demais..porem eu nao consigo acertar na criacao dos valores X, pq eu nao quero ter os valores de X apenas onde existem registros, mas sim ´mes/ano´ no intervalo de datas e as linhas saindo da sua posicao no grafico..por exemplo, se tenho vendas pra determinado produto apenas em janeiro e setembro, mas o intervalo de datas eh referente ao ano todo eu quero exibir de jan/2005 ateh dez/2005 e as linhas representando vendas em janeiro e setembro..
bom, o que eu quero fazer eh isso, mas nao estou conseguindo pq os valores de X entram em conflito com os meses e o grafico fica todo errado..
bom, eh isso..se alguem tiver um grafico desse tipo e puder me passar ou se puder me ajudar nisso aqui eu fico MUITO, MUITO agradecido...
ps.:estou usando o TChar
valeu...
Saint
Curtir tópico
+ 0Posts
10/06/2005
Saint
valeu, abração..
Gostei + 0
10/06/2005
Lucas Silva
Mais a primeira coisa a se fazer, é adicionar as séries de acordo com sua pesquisa...
Tipo assim... se o intervalo dee datas é 4 meses então você cria as 4 series....
Depois disto você tem que fazer a sql, que irá te mostrar os valores para cada mes...
para fazer esta sql, te aconselho a usar o comando groupby para já agrupar pela data...
Não sei se fui bem claro, mais qualquer dúvida, poste aqui,
Um abraço,
Lucas!
Gostei + 0
10/06/2005
Christian_adriano
um exemplo para vc estudar....
procedure MontarSelect(TabContPagar, TabContReceber, DataContPagar, DataContReceber, SomaContPagar, SomaContReceber, sAno : String; aQuery : TSQLQuery); begin with aQuery do begin Close; SQL.Clear; SQL.Add(´Select distinct (Select Sum(CP.´+SomaContReceber+´) - (Select Sum(CR.´+SomaContPagar+´ ) from ´+TabContPagar+´ CR Where CR.´+DataContPagar+´ >= :Janeiro and CR.´+DataContPagar+´ <= :FinalJaneiro) from ´+TabContReceber+´ CP where CP.´+DataContReceber+´ >= :Janeiro ´); SQL.Add(´and CP.´+DataContReceber+´ <= :FinalJaneiro) Janeiro, ´); SQL.Add(´(Select Sum(CP.´+SomaContReceber+´) - (Select Sum(CR.´+SomaContPagar+´ ) from ´+TabContPagar+´ CR Where CR.´+DataContPagar+´ >= :Fevereiro and CR.´+DataContPagar+´ < :FinalFevereiro) from ´+TabContReceber+´ CP where CP.´+DataContReceber+´ >= :Fevereiro ´); SQL.Add(´and CP.´+DataContReceber+´ < :FinalFevereiro) Fevereiro, ´); SQL.Add(´(Select Sum(CP.´+SomaContReceber+´) - (Select Sum(CR.´+SomaContPagar+´ ) from ´+TabContPagar+´ CR Where CR.´+DataContPagar+´ >= :Marco and CR.´+DataContPagar+´ <= :FinalJMarco) from ´+TabContReceber+´ CP where CP.´+DataContReceber+´ >= :Marco ´); SQL.Add(´and CP.´+DataContReceber+´ <= :FinalMarco) Marco, ´); SQL.Add(´(Select Sum(CP.´+SomaContReceber+´) - (Select Sum(CR.´+SomaContPagar+´ ) from ´+TabContPagar+´ CR Where CR.´+DataContPagar+´ >= :Abril and CR.´+DataContPagar+´ <= :FinalAbril) from ´+TabContReceber+´ CP where CP.´+DataContReceber+´ >= :Abril ´); SQL.Add(´and CP.´+DataContReceber+´ <= :FinalAbril) Abril, ´); SQL.Add(´(Select Sum(CP.´+SomaContReceber+´) - (Select Sum(CR.´+SomaContPagar+´ ) from ´+TabContPagar+´ CR Where CR.´+DataContPagar+´ >= :Maio and CR.´+DataContPagar+´ <= :FinalMaio) from ´+TabContReceber+´ CP where CP.´+DataContReceber+´ >= :Maio ´); SQL.Add(´and CP.´+DataContReceber+´ <= :FinalMaio) Maio, ´); SQL.Add(´(Select Sum(CP.´+SomaContReceber+´) - (Select Sum(CR.´+SomaContPagar+´ ) from ´+TabContPagar+´ CR Where CR.´+DataContPagar+´ >= :Junho and CR.´+DataContPagar+´ <= :FinalJunho) from ´+TabContReceber+´ CP where CP.´+DataContReceber+´ >= :Junho ´); SQL.Add(´and CP.´+DataContReceber+´ <= :FinalJunho) Junho, ´); SQL.Add(´(Select Sum(CP.´+SomaContReceber+´) - (Select Sum(CR.´+SomaContPagar+´ ) from ´+TabContPagar+´ CR Where CR.´+DataContPagar+´ >= :Julho and CR.´+DataContPagar+´ <= :FinalJulho) from ´+TabContReceber+´ CP where CP.´+DataContReceber+´ >= :Julho ´); SQL.Add(´and CP.´+DataContReceber+´ <= :FinalJulho) Julho, ´); SQL.Add(´(Select Sum(CP.´+SomaContReceber+´) - (Select Sum(CR.´+SomaContPagar+´ ) from ´+TabContPagar+´ CR Where CR.´+DataContPagar+´ >= :Agosto and CR.´+DataContPagar+´ <= :FinalAgosto) from ´+TabContReceber+´ CP where CP.´+DataContReceber+´ >= :Agosto ´); SQL.Add(´and CP.´+DataContReceber+´ <= :FinalAgosto) Agosto, ´); SQL.Add(´(Select Sum(CP.´+SomaContReceber+´) - (Select Sum(CR.´+SomaContPagar+´ ) from ´+TabContPagar+´ CR Where CR.´+DataContPagar+´ >= :Setembro and CR.´+DataContPagar+´ <= :FinalSetembro) from ´+TabContReceber+´ CP where CP.´+DataContReceber+´ >= :Setembro ´); SQL.Add(´and CP.´+DataContReceber+´ <= :FinalSetembro) Setembro, ´); SQL.Add(´(Select Sum(CP.´+SomaContReceber+´) - (Select Sum(CR.´+SomaContPagar+´ ) from ´+TabContPagar+´ CR Where CR.´+DataContPagar+´ >= :Outubro and CR.´+DataContPagar+´ <= :FinalOutubro) from ´+TabContReceber+´ CP where CP.´+DataContReceber+´ >= :Outubro ´); SQL.Add(´and CP.´+DataContReceber+´ <= :FinalOutubro) Outubro, ´); SQL.Add(´(Select Sum(CP.´+SomaContReceber+´) - (Select Sum(CR.´+SomaContPagar+´ ) from ´+TabContPagar+´ CR Where CR.´+DataContPagar+´ >= :Novembro and CR.´+DataContPagar+´ <= :FinalNovembro) from ´+TabContReceber+´ CP where CP.´+DataContReceber+´ >= :Novembro ´); SQL.Add(´and CP.´+DataContReceber+´ <= :FinalNovembro) Novembro, ´); SQL.Add(´(Select Sum(CP.´+SomaContReceber+´) - (Select Sum(CR.´+SomaContPagar+´ ) from ´+TabContPagar+´ CR Where CR.´+DataContPagar+´ >= :Dezembro and CR.´+DataContPagar+´ <=:FinalDezembro) from ´+TabContReceber+´ CP where CP.´+DataContReceber+´ >=:Dezembro ´); SQL.Add(´and CP.´+DataContReceber+´ <= :FinalDezembro) Dezembro ´); SQL.Add(´From ´+TabContReceber+´ C Where C.´+DataContReceber+´ >=´´01/01/´+sAno+´´´ and C.´+DataContReceber+´ <= ´´12/31/´+sAno+´´´´); end; aQuery.ParamByName(´Janeiro´).AsDate := StrToDate(´01/01/´+sAno); aQuery.ParamByName(´FinalJaneiro´).AsDate := StrToDate(´31/01/´+sAno); aQuery.ParamByName(´Fevereiro´).AsDate := StrToDate(´01/02/´+sAno); aQuery.ParamByName(´FinalFevereiro´).AsDate := StrToDate(´01/03/´+sAno); aQuery.ParamByName(´Marco´).AsDate := StrToDate(´01/03/´+sAno); aQuery.ParamByName(´FinalMarco´).AsDate := StrToDate(´31/03/´+sAno); aQuery.ParamByName(´Abril´).AsDate := StrToDate(´01/04/´+sAno); aQuery.ParamByName(´FinalAbril´).AsDate := StrToDate(´30/04/´+sAno); aQuery.ParamByName(´Maio´).AsDate := StrToDate(´01/05/´+sAno); aQuery.ParamByName(´FinalMaio´).AsDate := StrToDate(´31/05/´+sAno); aQuery.ParamByName(´Junho´).AsDate := StrToDate(´01/06/´+sAno); aQuery.ParamByName(´FinalJunho´).AsDate := StrToDate(´30/06/´+sAno); aQuery.ParamByName(´Julho´).AsDate := StrToDate(´01/07/´+sAno); aQuery.ParamByName(´FinalJulho´).AsDate := StrToDate(´31/07/´+sAno); aQuery.ParamByName(´Agosto´).AsDate := StrToDate(´01/08/´+sAno); aQuery.ParamByName(´FinalAgosto´).AsDate := StrToDate(´31/08/´+sAno); aQuery.ParamByName(´Setembro´).AsDate := StrToDate(´01/09/´+sAno); aQuery.ParamByName(´FinalSetembro´).AsDate := StrToDate(´30/09/´+sAno); aQuery.ParamByName(´Outubro´).AsDate := StrToDate(´01/10/´+sAno); aQuery.ParamByName(´FinalOutubro´).AsDate := StrToDate(´31/10/´+sAno); aQuery.ParamByName(´Novembro´).AsDate := StrToDate(´01/11/´+sAno); aQuery.ParamByName(´FinalNovembro´).AsDate := StrToDate(´30/11/´+sAno); aQuery.ParamByName(´Dezembro´).AsDate := StrToDate(´01/12/´+sAno); aQuery.ParamByName(´FinalDezembro´).AsDate := StrToDate(´31/12/´+sAno); end; procedure GerarGrafico(Ano : String; Grafico : TBarSeries; Panel : TPanel; Conexao : TSQLConnection); var sAnoI : TDate; TabGrafico : TSQLQuery; begin try try // Criando Query de Pesquisa TabGrafico := TSQLQuery.Create(nil); TabGrafico.SQLConnection := Conexao; // Testa o Ano sAnoI := StrToDate(´01/01/´ + Ano); with TabGrafico do begin MontarSelect(´ContPagar´, ´ContRec´, ´dt_pgto´, ´Data_Pagto´, ´vl_pgto´, ´Valor_Pagto´,Ano, TabGrafico); Panel.Visible := False; if (not Prepared) then Prepared := true; Open; if (RecordCount > 0) then begin // Manipulando o TChart (Series1) Grafico.Clear; Grafico.AddBar(TabGrafico.FieldByName(´Janeiro´).AsCurrency, ´Janeiro´, clBlue); Grafico.AddBar(TabGrafico.FieldByName(´Fevereiro´).AsCurrency, ´Fevereiro´, clBlack); Grafico.AddBar(TabGrafico.FieldByName(´Marco´).AsCurrency, ´Março´, clRed); Grafico.AddBar(TabGrafico.FieldByName(´Abril´).AsCurrency, ´Abril´, clLime); Grafico.AddBar(TabGrafico.FieldByName(´Maio´).AsCurrency, ´Maio´, clYellow); Grafico.AddBar(TabGrafico.FieldByName(´Junho´).AsCurrency, ´Junho´, clFuchsia); Grafico.AddBar(TabGrafico.FieldByName(´Julho´).AsCurrency, ´Julho´, clSilver); Grafico.AddBar(TabGrafico.FieldByName(´Agosto´).AsCurrency, ´Agosto´, clGray); Grafico.AddBar(TabGrafico.FieldByName(´Setembro´).AsCurrency, ´Setembro´, clNavy); Grafico.AddBar(TabGrafico.FieldByName(´Outubro´).AsCurrency, ´Outubro´, clGreen); Grafico.AddBar(TabGrafico.FieldByName(´Novembro´).AsCurrency, ´Novembro´, clMaroon); Grafico.AddBar(TabGrafico.FieldByName(´Dezembro´).AsCurrency, ´Dezembro´, clLtGray); Grafico.ValueFormat := ´#,0.00´; Panel.Visible := true; end else begin Application.MessageBox(´Não foi encontrado nenhum registro!´,´Aviso´,mb_OK+MB_ICONWARNING); exit; end; end; finally TabGrafico.Free; end; except Application.MessageBox(´Ano inválido!´,´Atenção´, mb_OK + MB_ICONWARNING); abort; end; end;
t+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)