Índice:


       

Objetivo:


       Esta página tem por finalidade descrever a usabilidade do controle Sub-relatório utilizada no Reports.

Introdução:


       O controle Sub-Relatório possibilita a inclusão de um ou mais relatórios na estrutura de um relatório principal.

       Informações úteis sobre o funcionamento de sub-relatórios:

  • A ferramenta não transfere ao sub-relatório o filtro cadastrado no relatório principal. Ele transfere apenas a chave da tabela da banda em que o sub-relatório está inserido.
  • Relatórios filhos baseados em consultas SQL que esperam parâmetros do relatório pai, não podem possuir campos em sua estrutura com a mesma nomenclatura do parâmetro do relatório pai.

       Para exemplificarmos a utilização desse controle chamaremos o relatório principal de relatório “Pai” e qualquer relatório acionado pelo controle Sub-Relatório de relatório “Filho”

Exemplos:


       Criamos o relatório pai com a seguinte estrutura:

       Detalhe1 – Tabela de Seções (PSECAO).

       -- RodapédoDetalhe1 - Incluso o controle Sub-Relatório.

       Acesse o menu “Caixa de Ferramentas | Controles Avançados”, selecione o controle “Sub-Relatório”. Clique sobre o controle e mantendo o botão esquerdo do mouse pressionado, arraste o controle para o local desejado da estrutura do relatório.

       

Caso o menu “Caixa de Ferramentas” não esteja visível acesse o menu “Exibição | Janelas | Caixa de Ferramentas”.

       Em seguida foi criado o relatório filho com a seguinte estrutura:
       Detalhe1 – Tabela de Funcionários (PFUNC).

       Concluído a elaboração dos relatórios filho é necessário fazer associação de ambos através do controle Sub-Relatório.

       Para realizar a associação do relatório filho ao controle Sub-Relatório, clique sobre o controle e acesse suas propriedades pela smart tag, clique sobre a caixa na propriedade "relatório" e em reticências na pesquisa pelo registro.

       Ou selecione o controle e tecle F4 para apresentação das propriedades do controle. Na grade de propriedades selecione “Dados | Relatório”. Na caixa de pesquisas procure pelo código do relatório filho.

       Concluída a escolha do relatório lembre-se de informar qual o “Caminho” (relacionamento entre as tabelas dos relatórios) será utilizado.

       Concluída a associação dos relatórios através do controle Sub-Relatório, basta gera-lo. Ao final do nosso exemplo, no preview, teremos o relatório pai grifado na cor laranja e as informações do relatório filho em azul.

       No exemplo seguinte vamos utilizar um relatório com mais bandas e com o relatório filho constituído por consulta SQL a fim de exemplificarmos a passagem de parâmetros do relatório pai para filho.

       No relatório pai utilizaremos a seguinte estrutura;

       - Detalhe1 – Tabela de Seções (PSECAO).

       -- Sub-Detalhe1 – Sem ligação.

       ---- Detalhe2 – Controle Sub-Relatório.

       Acesse o menu “Caixa de Ferramentas | Controles Avançados”, selecione o controle “Sub-Relatório”. Clique sobre o controle e mantendo o botão esquerdo do mouse pressionado, arraste o controle para o local desejado da estrutura do relatório.

       

Caso o menu “Caixa de Ferramentas” não esteja visível acesse o menu “Exibição | Janelas | Caixa de Ferramentas”.

       No relatório filho, criaremos uma consulta SQL para retornar as informações do relatório. A consulta SQL terá o seguinte contexto;

SELECT PFUNC.CODSECAO,
       PFUNC.CHAPA,
       PFUNC.NOME,
       PFUNC.SALARIO
FROM   PFUNC ( NOLOCK )
WHERE  PFUNC.CODSECAO = :CODIGO1

       Na consulta SQL acima retornaremos dados dos funcionários de uma determinada seção. Utilizaremos o campo CODIGO1 como parâmetro para definir de qual seção os funcionários litados são correspondentes. Este campo, CODIGO1 (Código identificador da seção) está incluso no relatório pai.

       Diferente do relatório constituído por campo da base, quando fazemos a associação do relatório filho através do controle “Sub-relatório” não é necessário informar o “caminho”, o próprio campo do relatório pai utilizado como parâmetro na consulta SQL do relatório filho fará essa função.

       Concluída a associação do relatório pai com relatório filho através do controle “Sub-Relatório”, basta salvar e gera-lo. Ao final do nosso exemplo, no preview, teremos o relatório pai grifado na cor verde e as informações do relatório filho em vermelha.

(aviso)       Reforçamos que relatórios filhos baseados em consultas SQL que esperam parâmetros do relatório pai, não podem possuir campos em sua estrutura com a mesma nomenclatura do parâmetro do relatório pai.