# 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. 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: 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
> 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 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. 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: Não esqueça de ao gerar o seu relatório deixar ativa a opçao Verify on Every Print do menu Database desative opção Save Data with Closed Report na opção Database->Set Location... clique no botão Same as Report. 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