Gerando Gráficos com o Crystal Reports


Vamos ver como gerar gráficos no Crystal Reports. Eu sei, eu sei , tem o Excel que é muito melhor, tem o MSChart que também não lá estas coisas e tem também alguns OCX's de terceiros(First Impression) que são fantásticos. Mas tudo isto consome recursos , do seu bolso e do sistema , e ao distribuir sua aplicação você terá que contar que o usuário final tenha o produto instalado (no caso do Excel).

Espero que com isto você se convença que valha a pena dar uma olhada nesta possibilidade usando o Crystal Reports. Não espere maravilhas , afinal estaremos usando a versão 4.6 que vem junto com o VB 5.0 , e o Crystal já está na versão 6.0.

Construiremos dois gráficos : um de pizza e outro de barras ( os mais usados ) ; usaremos como fonte de dados a tabela tblalunos do arquivo ESCOLA.MDB construido anteriormente.(Veja estrutura da tabela abaixo)

Gráfico de Pizza

Criando a Consulta SQL

O gráfico de pizza deverá mostrar os alunos por período, onde cada fatia representará um período discriminado no gráfico pela cor e pela legenda aplicada.

O pulo do gato neste caso é montar uma consulta que totalize os alunos por período e usar o resultado para montar o gráfico no Crystal. Vejamos como fazer isto.

  1. Crie uma consulta no seu banco de dados com o nome de qry_periodo. Você pode usar o Access para fazer isto ou criar um consulta via código ( veja o artigo Criando Consultas Parametrizadas ). Vamos usar o Access pois é mais fácil:
  1. Abra o Banco de Dados Escola.mdb no Access (Usamos aqui o Access 7.0 ) e selecione a aba Consultas e a seguir clique no botão Novo
  1. Clique no botão OK e a seguir , estando selecionada a tabela tblalunos clique no botão adicionar e a seguir no botão fechar
  2. A seguir no Menu Exibir selecione a opção Nome das Tabelas e a opção Totais; percorra a tblalunos e clique duas vezes sobre o campo período ; repita a operação anterior clicando duas vezes sobre o campo periodo.
  3. Finalmente na primeira coluna Período , na linha Total deixe em Agrupar Por e na segunda coluna Período na linha Total selecione Contar.(Veja Resultado Final na tabela Abaixo)
  • Se quiser aperfeiçoar o trabalho , na segunda coluna, linha Campo, substitua o nome periodo por: Numero de Alunos: periodo. Pronto terminamos a consulta , salve-a com o nome QRY_PERIODO.
  • Agora clique no Menu Exibir opção modo SQL e teremos a instrução SQL para a nossa consulta:
SELECT tblalunos.periodo, Count(tblalunos.periodo) AS [Numero de alunos] FROM tblalunos GROUP BY tblalunos.periodo;

Criando o Gráfico de Pizza

  • Abra o Crystal Reports e selecione no menu as opções File->New , a seguir clique no ícone Ghaph (fig 1.0) e na janela do Create Report Expert clique no ícone Data File.
fig 1.0
  • Selecione o seu arquivo de dados , usaremos d:\escola\escola.mdb, e clique no botão ADD da janela Choose Database File . Após as tabelas e consultas serem incluidas clique no botão Done.(fig 2.0)
fig 2.0
Selecione a consulta criada - Qry_Periodo - e delete as demais tabelas e consultas. (fig3.0)
fig 3.0
 
Na aba Fields inclua os campos da consulta (fig 4.0)
fig 4.0
 
Na Aba Graph , Selecione o Tipo de Gráfico. (fig 5.0)
fig 5.0
 
Na Aba Text, do Graph/Chart Expert , Digite o Titulo do Gráfico na caixa Title, e , informe o nome do eixo X e do eixo Y(fig 6.0)
fig 6.0
 
Na options, clique nas opções Show Legend , Show grid Lines e Show values on risers e a seguir em Graph Done.(fig 7.0)
fig 7.0
 
Pronto podemos visualizar o relatório em tempo de desenho, faça os ajustes escondendo(hide) as secções de forma a obter o relatório da fig 8.0
fig 8.0
 
Vamos inserir uma formula que dará nome a cada período. Clique na opção Insert->Formula Field e digite a formula da figura 9.0
fig 9.0
 
Pronto, podemos executar o relatório ; devemos ter algo parecido com a fig 10
fig 10
Agora não esqueça de salvar o relatório , que tal grafico.rpt, e preparar o código para imprimir o relatório no VB.

Algo como: (Aqui chamamos o nosso controle Crystal Reports de CR1)

cr1.WindowState = 2 'janela maximizada

cr1.WindowControlBox = True 'ativa os botões de controle da janela

cr1.ReportFileName = App.Path & "\gráfico.rpt" 'caminho nome do relatorio

cr1.Destination = 0 'imprime na tela

cr1.Action = 1 'inicia impressao

Obs:

  1. Não esqueça de ao gerar o seu relatório deixar ativa a opçao Verify on Every Print do menu Database
  2. desative opção Save Data with Closed Report
  3. na opção Database->Set Location... clique no botão Same as Report.
  4. Você pode alterar as opções em tempo de desenho do relatório clicando com o botão direito do mouse sobre o gráfico.

E, por hoje é só...


retorna