> ## 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:

- Código do Aluno
- Nome do Aluno
- Data de Emissão do relatório
- Periodo, Curso, Série , Bimestre
- Nome da Matéria Cursada
- Nota do bimestre para cada aluno/matéria.

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:

TblAlunos | TblCursos | TblNotas | TblProfessor
--- | --- | --- | ---
    codaluno
    nome
    endereco
    telefone
    nascimento
    nomepai
    nomemae
    observacao
    Periodo
    serie
    numero
    codcurso
    nomecurso
    codprofessor
    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:

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)

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.

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)

figura 4.0

A caixa de diálogo Link Options surge mostrando os detalhes dos vínculos (fig 5.0)

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 Campo | Tabela 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:

figura 6.0

Ja podemos clicar no botão Preview para podermos visualizarmos nosso relatório (fig 7.0)

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)

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.
figura 9.0
Se você fez tudo certo obterá algo parecido com a figura 10 abaixo:

figura 10

Agora e só ajustar os campos conforme o lay-out da figura 11 abaixo:

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.

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:

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.

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:

figura 15

Logo a seguir a janela da figura 16 será mostrada e iremos montar a fórmula nela mostrada:

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)

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).

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