DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Criação de gráficos com dbChart

Crie gráficos para suas aplicações, com esse artigo de Bruno Lichot.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

Passo a Passo

 

Fala galera!

Após um tempinho de herdwork e out of time, estamos de volta. E esta semana vamos abordar um assunto interessante: a criação de gráficos.

Mas, antes de começarmos, gostaria de agradescer a todos que tem me enviado e-mails e contribuido para o aprimoramento da nossa coluna. Estou muito satisfeito de ajudar e ser ajudado, satisfeito por que este veículo de comunicação tem levado informações relevantes a todas as pessoas que dele usufruem. Lembrem sempre: "O Caminho do crescimento é a humildade e a carência do saber, mas a soberba precede a queda"(Jesus Cristo).

Continuem escrevendo e espero estar ajudando com mais este artigo. Fiquem de olho no próximo ClubeDelphi TechDay! Aí galera do Sul, vamos nos encontrar em breve!

Gráficos: Ferramenta de Análise e Tomada de Decisão

A utilização de representação gráfica para demonstração de situações, acontecimentos, para ensinar, entre outras aplicações, tem se perdurado desde os tempos remotos da humanidade. Hoje com os sistemas de informação baseado em softwares e banco de dados, a consolidação destas informações são de extrema necessidade para, principalmente, projetar os dados de forma inteligível a ponto de se tornarem uma informação relevante. Esta técnica é muito utilizada para embasar tomada de decisão, projeção financeira, crescimento, mentas e motivação.

Desta forma, faremos construção de um gráfico que demonstre a projeção de venda dos produtos de nosso sistema num período determinado de tempo.

Criando Gráficos

Adicione um novo formulário ao projeto, defina sua propriedade Name como FrmGrafico salve sua unidade como UGrafico e defina sua interface como demonstrado abaixo. O nome dos componentes DateTimePickers será DtpInicial e DtpFinal. O nome do edit será EdtValor.

 

Adicione ao FrmGrafico um objeto DBChart da palheta DataControls de forma que preencha o restante do formulário. Defina a propriedade WindowState do FrmGrafico como wsMaximized.

Adicione um SqlDataSet para nele criarmos a projeção de dados que fornecerá os valores para criação do gráfico de projeção de vendas por período. Defina suas propriedades como demonstrado a seguir.

 

Observação: Estou utilizando três tabelas: Pedidos, Itens e Produtos para montar a minha projeção de exemplo. O leitor pode optar por outra projeção.

 

Name: SqlGrafico

SqlConnection: SqlConnection

CommandText:

SELECT      PRODUTOS.DESCRICAO

               ,SUM(ITENS.PRECO * ITENS.QUANTIDADE) AS TOTAL

FROM         PEDIDOS

               ,ITENS

               ,PRODUTOS

WHERE       PEDIDOS.DATA BETWEEN :DATA1 AND :DATA2

AND           PEDIDOS.ID_PEDIDO = ITENS.ID_PEDIDO

AND           ITENS.ID_PRODUTO = PRODUTOS.ID_PRODUTO

GROUP BY   PRODUTOS.DESCRICAO

HAVING      SUM(ITENS.PRECO * ITENS.QUANTIDADE) > :VALOR

ORDER BY   PRODUTOS.DESCRICAO

Params: DATA1 e DATA2 – DataType = ftDate

              VALOR – DataType = ftFloat

 

Observação: Este DataSet fornece a projeção de produtos vendidos dentro de um determinado período. Período este, fornecido pelo usuário definido pelos parâmetros DATA1 e DATA2, bem como a restrição de valor total de venda no período definido no parâmetro VALOR.

O componente DBChart não está habilitado a trabalhar com dados provenientes de um DataSet unidirecional como o SqlGrafico. Neste caso adicionaremos um DataSetProvider e um ClientDataset para solucionar esta questão. Adicione os componentes e siga as configurações a seguir.

 

Tipo: DataSetProvider

Name: DspGrafico

DataSet: SqlGrafico

Tipo: ClientDataset

Name: CdsGrafico

ProviderName: DspGrafico

Observação: Este DataSet fornecerá os dados obtidos no SqlGrafico para o DBChart. Clique com o botão esquerdo do mouse sobre o CdsGrafico e selecione a opção Fetch Params com o objetivo de adicionar os parâmetros do DataSet de origem e adicione seus campos como objeto, aplicando um duplo clique sobre o CdsGrafico e em seguida Ctrl+F.

 

No FrmGrafico selecione o DBChart e aplique um duplo clique sobre ele para fazermos as suas configurações.

 

Abrirá um wizard para auxiliar a configuração do DBGrid.

 

Nesta aba Series, definiremos o tipo de gráfico a ser gerado, clique no botão Add.. e selecione o tipo de gráfico Pie.

 

Abra a aba Titles e defina no textarea o título do gráfico. Nesta etapa podem ser definidas as configurações relacionadas ao título do gráfico como posicionamento, cores e fontes relacionadas e ambiente.

 

Na aba Panel estão as configurações de fundo do gráfico como o preenchimento gradiente. Veja a figura abaixo:

 

Na aba 3D estão as configurações relacionadas ao gráfico como distância, posicionamento, profundidade, etc.

 

Abra a aba Series superior e em seguida a sub-aba Marks e no grupo Style selecione Label and Percent.

 

Abra a aba Data Source, nesta aba vamos configurar a fonte de dados para a geração do gráfico. Defina no combobox a fonte como DataSet no combobox DataSet defina o CdsGrafico, no Label defina DESCRICAO e no Pie defina TOTAL.

 

Façamos agora os eventos do formulário.

Evento OnClick do botão Gráfico

 

procedure TFrmGrafico.BitBtn1Click(Sender: TObject);

begin

  Screen.Cursor := crHourGlass;

  CdsGrafico.Close;

  CdsGrafico.Params[0].AsDate := DtpInicial.Date;

  CdsGrafico.Params[1].AsDate := DtpFinal.Date;

  CdsGrafico.Params[2].AsFloat := StrToFloat(EdtValor.Text);

  CdsGrafico.Open;

  Screen.Cursor := crDefault;

end;

 

Neste procedimento modificamos o cursor do mouse para o caso da consulta aos dados demorar, o usuário tenha a impressão de que existe algo em processamento e não pense que o programa parou de executar, na seqüência passamos os parâmetros da consulta e definimos o cursor do mouse novamente como o padrão. Evento OnClick do botão Fechar

 

procedure TFrmGrafico.BitBtn2Click(Sender: TObject);

begin

  Close;

end

 

Evento OnClose do FrmGrafico

 

procedure TFrmGrafico.FormClose(Sender: TObject; var Action: TCloseAction);

begin

  CdsGrafico.Close;

end;

 

Evento OnShow do FrmGrafico

 

procedure TFrmGrafico.FormShow(Sender: TObject);

begin

  DtpInicial.Date := Date - 30;

  DtpFinal.Date := Date + 40;

end;

 

Pronto pessoal, agora basta colocar em prática! Até a próxima! Compartilhando para Conquistar


Bruno Lichot
System Engineer da Borland/MicroFocus, especialista em desenvolvimento de aplicações de missão critica, multicamadas, web services, de alta disponibilidade, interfaces web e distribuição geográfica. É Consultor Técnico para a linha da Embarcadero. Atua na implementação e consultoria de Projetos Ágei...
O que você achou deste post?

    2 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Athenas Software
Gostaria de saber como se configura a impressora, via programação, que o DBChart utilizará para imprimir o gráfico?
[há +1 ano] - Responder

 

Emanuel Silva
Athenas, adicione no uses a classe TeePrevi, e no OnClick de algum botão o evento: ChartPreview(Self, DBChart1);

Abraço.
[há +1 mês] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03