Relatório com dados de várias tabelas e Seleção de registros.

O Crystal Reports  é o gerador de relatórios que vem junto com o Visual Basic.
Para uma introdução téorica já com um exemplo prático clique no link Crystal.

Nesta secção iremos abordar exemplos práticos abordando as dúvidas mais comuns 
dos iniciantes. Vamos lá.

Veremos como gerar um relatório que contenha dados oriundos de diversas tabelas,
e de como selecionar os registros que queremos imprimir.

Estaremos usando a versão do Crystal Reports que acompanha o Visual Basic 5.0.

Projeto Alunos - Relatório - BOLETIM ESCOLAR

Você trabalha como programador em uma grande escola e recebeu a incumbência de gerar o relatório bimestral para os alunos do 2º grau com os seguintes dados: Só para lembrar você possui somente o Visual Basic 5.0.E vai ter que usar o Crystal Reports para gerar o relatório. Ah!, esqueci de avisar, o relatório era para ontem... -Vamos supor que temos três tabelas:
  1. Dados Disclipinas/Notas - tblnotas
  2. Cadastro dos alunos - TblAlunos
  3. Cadastro de Disciplinas - tblCursos
  4. Cadastro Professores - TblProfessor
A estrutura das tabelas é dada a seguir:
TblAlunosTblCursosTblNotasTblProfessor
codaluno
nome
endereco
telefone
nascimento
nomepai
nomemae
observacao
Periodo
serie
numero
codcurso
nomecurso
codprofessor
creditos
codaluno
codcurso	
nota
ano
bimestre
Observacao
codprofessor
nome
endereco	
telefone
Obs : Codaluno , Codcurso, CodProfessor são chaves primárias de suas respectivas tabelas.

Já deu para perceber que os dados dos seus relatórios não estão todos em uma única tabela, e , você vai ter que juntar os dados para obter o rela- tório que deverá ter o seguinte layout :
Nome Escola                   BOLETIM ESCOLAR                   pag. nº 
                                  Bimestre
------------------------------------------------------------------------
Nome do Aluno                   cod. aluno                 data emissão   
Período            Curso        Série             Número       
-------------------------------------------------------------------------
Nome das disciplinas|  Nota   |             OBSERVAÇÕES
--------------------|---------|------------------------------------------
     .              |         |
     .              |         |
     .              |         |
-------------------------------------------------------------------------


No espaço reservado para observações devemos informar quando o aluno não atingiu a média mímina para aprovação , nota inferior a 5, e colocar a mensagem : "NOTA ABAIXO DA NOTA MÍNIMA - ALUNO EM RECUPERAÇÃO". Além disso deveremos informar a média aritmética das notas do aluno no bimestre.

Bem , vamos ao trabalho, no VB ative o Crystal Reports através da opção Add Ins->Report Designer...
ou crie um atalho na área de trabalho para chamar o Crystal Reports.

Selecionando a opção New do menu File teremos a tela da figura 1.0 abaixo:
Crystal Report Designer
figura 1.0
Após clicar no botão Standard , devemos selecionar a base de dados na opção Data File , para o nosso caso criamos a base de dados chamada Escola.mdb. Como você pode notar a tabela Tblprofessor não contém nenhum campo que iremos usar em nosso relatório, portanto exclua-a da lista e a seguir clique no botão Next para prosseguir.
A seguir temos um lista de todas as tabelas e consultas gravadas na base de dados que iremos utilizar (fig 2.0)
Crystal Reports
figura 2.0
No próximo passo, Links , é que esta o segredo para que os dados das três tabelas sejam incorporados ao nosso relatório e mantenham a correspondencia entre os dados das mesmas: O Crystal reconhece os relacionamentos entre as tabelas automaticamente , mas é possível criá-los nesta etapa , bastando clicar sobre o campo de uma tabela e arrastá-lo até o campo correspondente da outra tabela , apos feito isto uma linha unindo os dois campos indica que o relacionamento foi criado. Nesta etapa podemos também eliminar as associações existentes bem como admitir novas bases de dados ao relatório. Naturalmente uma relação válida somente será efetivada entre campos indexados (pelo menos um) e do mesmo tipo.
Crystal Reports
figura 3.0
Para verificar o relacionamento clique com o botão direito do mouse sobre uma das linhas e na opção options do menu suspenso.(fig 4.0)
Crystal Reports
figura 4.0
A caixa de diálogo Link Options surge mostrando os detalhes dos vínculos (fig 5.0)
Crystal Reports
figura 5.0
Vamos selecionar os campos da tabela que serão impressos no relatório - selecione cada campo e clique no botão Add. Os campos do nosso relatório serão os seguintes:
Nome do CampoTabela de Origem
Codaluno
Nome
periodo
serie 
numero
nomecurso
nota 
ano
bimestre
tblalunos
tblalunos
tblalunos
tblalunos
tblalunos
tblcursos
tblnotas
tblnotas
tblnotas
Ao final devemos ter algo parecido com a figura 6.0 abaixo:
Crystal Report Designer
figura 6.0
Ja podemos clicar no botão Preview para podermos visualizarmos nosso relatório (fig 7.0)
Crystal Report Designer
figura 7.0
Nada animador não é mesmo ? Mas iremos ajustá-lo ao nosso lay-out.Clique na aba Design para podermos ajustar o lay-out do relatório.(fig 8.0)
Crystal Report Designer
figura 8.0
Primeiro iremos inserir um grupo em nosso relatório , pois queremos agrupar os alunos por código. Para isso clique no menu Insert opção Group Section. e selecione a opção tblalunos.codigo(fig 9.0) e clique em OK. Crystal Report Designer
figura 9.0
Se você fez tudo certo obterá algo parecido com a figura 10 abaixo:
Crystal Report Designer
figura 10
Agora e só ajustar os campos conforme o lay-out da figura 11 abaixo:
Crystal Report Designer
figura 11
Para mover os campos clique sobre os mesmos e arraste-os para a nova posição. Para inserir um texto selecione a opção do menu Insert e a seguir Text Field, digitando o texto desejado e posicionando-o no relatório. Para formatar um campo clique com o botão direito do mouse sobre o campo , o menu da figura 12 surgirá com as várias opções de formatação.
Crystal Report Designer
figura 12
Iremos formatar a seção que inserimos de forma a obter os dados de cada aluno em páginas distintas, para isso clique com o botão direito do mouse sobre a seção e ative as opções mostradas na figura 13:
Crystal Report Designer
figura 13
Vamos agora inserir o campo que calculará a média aritmética das notas dos alunos. Clique no campo nota e a seguir no botão com simbolo de somatória . A seguir na janela da figura abaixo(figura 14) selecione a opção average e posicione o campo abaixo do campo nota.
Crystal Report Designer
figura 14
Deveremos também inserir uma fórmula que irá mostrar a mensagem no espaço observações quando a nota do aluno para a matéria for abaixo da nota mínima(5)

Para isso clique na opção do menu Insert e Formula Field, a seguir informe o nome da formula figura 15:
Crystal Report Designer
figura 15
Logo a seguir a janela da figura 16 será mostrada e iremos montar a fórmula nela mostrada:
Crystal Report Designer
figura 16
Observer as janelas Fields, Functions e Operators . Para selecionar um de seus elementos basta clicar duas vezes sobre o mesmo. Bem agora não esqueça de salvar o relatório , chamaremos o nosso de boletim.rpt. Finalmente você pode clicar na aba Preview para ver o resultado final do seu trabalho (figura 17)
Relatório Final
figura 17
Obs: Para desenhas as linhas e a caixa em torno do nome BOLETIM usamos os botões da barra de ferramentas do crystal (fig 18).
Relatório Final
figura 18

Muito bem, e como ficaria o código para imprimir o relatório boletim.rpt no Visual Basic ? Que tal 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 & "\boletim.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.

    Voilá , até a próxima...

  • Conteúdo
    Retorna