Índice | ||||
---|---|---|---|---|
|
O objetivo deste documento é mostrar o funcionamento da ferramenta de sub-relatório, que será configurada diretamente no Designer do Relatório.
Um sub-relatório é definido como um relatório incluso em outro relatório, de forma que qualquer relatório pode ser usado como um sub-relatório, respeitando o acesso definido ao relatório individualmente.
A inclusão de sub-relatórios permite a criação de layouts complexos com diferentes partes em um único documento, sendo preenchido usando diferentes fontes de dados e relatórios.
Dica | ||
---|---|---|
| ||
Por se tratar de um relatório, o sub-relatório possui sua própria fonte de dados com seus filtros e/ou parâmetros. |
Para melhor exemplificar o uso do recurso, será criado um fluxo de uso a seguir, contendo o seguinte cenário:
O Conector usado, referente a um Provedor Nativo, possui os Objetos de Negócio: Funcionários e o Histórico de Férias desse funcionário, pertencentes à área "Simulação".
Os dados demonstrados, que serão usados para criação dos Relatórios, estão disponíveis no seguinte endereço:
Bloco de código | ||
---|---|---|
| ||
https://run.mocky.io/v3/bec2d116-8298-4ff5-93c2-24a340ed0901 |
Conforme a representação, as informações de férias no relatório principal de Funcionários, vêm de um sub-relatório de Histórico de Férias. Para chegar no resultado esperado, os Objetos de Negócio a serem usados se relacionam através do campo "Chapa", que será parametrizado e será responsável por fazer a relação entre o sub-relatório com o Funcionário listado pelo Relatório Principal.
O primeiro passo será criar o Relatório que será referenciado como um Sub-Relatório. Para ele, será configurado com o Objeto de Negócio Histórico de Férias.
Seguindo o Modelo de Relatório Final, os dados de Histórico de Férias (Sub-Relatório) serão trazidos para cada Funcionário da Lista de Funcionários (Relatório Principal). Para passagem de valores do relatório principal para o sub-relatório, deve ser definido um parâmetro no relatório que está sendo usado como sub-relatório. Para que isso aconteça, será necessário:
Informações | ||
---|---|---|
| ||
O Filtro do Relatório será feito pelo Design do Relatório através da String de Filtro. Dessa forma a geração do sub-relatório acompanha cada linha gerada pelo Relatório Principal, assim, para cada Funcionário listado, será retornado Histórico de Férias referente a ele. O Filtro feito pelo Objeto de Negócio não se aplica para esse caso, uma vez que seria aplicado para toda a geração do Relatório. Por exemplo, filtrando o funcionário '00001', só seria retornado o Histórico de Férias (sub-relatório) desse Funcionário, não retornando outros funcionários listados pelo Relatório Principal. |
Na geração individual desse Relatório, deve ser informado o valor dos parâmetros criado pelo Designer, resultando no relatório de Histórico de Férias referente ao Funcionário especificado:
O próximo passo será criar o Relatório Principal, escolhendo o Objeto de Negócio Funcionários. O relatório será uma lista simples de Funcionários e não conta com a adição de Filtros ou Parâmetros.
No Designer do Relatório Principal, será trazido para o Layout o Componente de Sub-Relatório, referenciando assim o relatório de Histórico de Férias:
O componente de Sub-Relatório se encontra na Barra de Controles na lateral esquerda do Designer e assim como os outros controles, o componente deve ser arrastado para o Layout para configuração.
Na Barra de Propriedades, na lateral direita, é onde será configurado o Sub-Relatório, sendo na propriedade "Relatório Fonte Url" onde será selecionado o relatório a ser vinculado ao relatório principal como um Sub-Relatório.
Informações |
---|
São listados na propriedade Relatório Fonte Url todos os relatórios aos quais o usuário logado possui permissão, sendo Proprietário, Editor ou Leitor do relatório em questão. |
Nota |
---|
Ao definir o 'Nome' do componente, é alterado apenas a exibição do componente no layout do Designer e não irá refletir na Visualização/Geração do relatório. |
Ao inserir o sub-relatório no Relatório Principal, é possível fazer a ligação de um valor do Relatório Principal que deverá ser passado ao Parâmetro do sub-relatório.
Para esse caso, será aplicado da seguinte forma:
O relatório Final será gerado, preenchendo para cada linha do Relatório Principal, o Sub-Relatório referente a essa linha.
No Modelo de Dados usado é trazido o Histórico de Férias do primeiro Funcionário, trazendo os campos vazios para o segundo funcionário, que não possui um histórico de Férias:
O Cadastro de um Relatório para ser usado como um Sub-Relatório pode ser feito diretamente no componente de Sub-Relatório.
Com o duplo-clique no componente que não está preenchido com nenhum sub-relatório, será aberta uma nova aba no Designer completamente vazia, onde ao clicar em Salvar, será aberta uma janela para informar o nome do Novo Relatório.
Dica |
---|
Ao fazer a criação de um Relatório através da abertura de Nova Guia pelo componente de Sub-Relatórios, o relatório criado é automaticamente vinculado como um Sub-Relatório pelo componente, no entanto, é necessário que essa alteração seja salva no Designer do Relatório Principal. |
Qualquer relatório referenciado como um sub-relatório pode ser acessado pelo duplo-clique do componente. O Relatório acessado dessa forma, implica apenas em uma nova aba dentro do Designer. Isso significa que qualquer outro fluxo selecionado, como Informações Gerais ou configuração de Objeto de Negócio, será referente ao Relatório Principal em edição.
Nota |
---|
A definição de Objeto de Negócio deve ser feita pela edição específica do Relatório, acessada através da Listagem Principal de Relatórios. |
Informações |
---|
A aplicação conta com o Design de Relatórios da DevEx, para documentação sobre o uso de seus componentes, acesse: https://docs.devexpress.com/XtraReports/2162/reporting |