Histórico da Página
Introdução
...
O relatório dinâmico visa de forma transparente e simples, permitir que sejam inseridos componentes que irão compor a saída do relatório, isto é, seu resultado final apresentado. Desta forma, temos uma interface que pode ser confeccionada e customizada em poucos passos, trazendo um dinamismo e maior rapidez na execução dos relatórios do sistema. Dessa forma podem ser passados parâmetros de seleção por contratos, subunidades, cliente/fornecedor, entre outros.
Como utilizar
...
O relatório dinâmico deve ser acessado em Shopping / Relatórios / Relatório Dinâmico. Este menu possui permissão, então o usuário deve ter a sua respectiva permissão habilitada para utilizá-lo.
É importante frisar que toda a modificação resultante na tela do relatório dinâmico deve ser primeiro realizada nos relatórios que irão fornecer os parâmetros para a exibição da tela. Abaixo vamos mostrar como realizar essa alteração.
Existem duas opções de tipo de retorno de componentes:
- Multi Record: Quando há a necessidade que em determinado parâmetro seja selecionado vários registros. Identificado pela inicial MRE_
- Lookup: Quando há a seleção somente de um registro em determinado parâmetro. Identificado pela inicial LKP_
As tabelas disponíveis para passagem de parâmetros para execução do relatório dinâmico são as seguintes:
Tipos de Parâmetros
Multi Record (MRE_)
Utilizado quando é necessário selecionar mais de um registro em um mesmo parâmetro.
Esse tipo de parâmetro é identificado pelo prefixo MRE_ e deve ser aplicado em consultas SQL que utilizem operadores como IN ou FILTER, conforme exemplificado na Tabela abaixo.
Lookup (LKP_)
Utilizado quando é permitida a seleção de apenas um único registro no componente.
É identificado pelo prefixo LKP_ e possui uma regra específica de uso: ao criar o relatório, o parâmetro deve ser nomeado com o prefixo LKP_, e a sentença SQL deve utilizar o parâmetro conforme o padrão definido para cada Tabela, conforme listado abaixo.
Tabela Definição de Campos
| Tabela | Descrição | Parâmetro MULTIRECORD (IN) | Parâmetro MULTIRECORD (FILTER) | Parâmetro LOOKUP | |
|---|---|---|---|---|---|
| Parâmetro no Relatório | Parâmetro na Consulta SQL | ||||
FCFO | Cliente / Fornecedor | ||||
| Tabela | Parâmetro Multirecord IN | Parâmetro Multirecord Filter | Parâmetro Lookup | ||
| XCOMPRADOR | MRE_ XCOMPRADOR_IN | MRE_ XCOMPRADOR_FILTER | LKP_ XCOMPRADOR | ||
XCLIENTE | MRE_XCLIENTE_IN | MRE_XCLIENTE_FILTER | LKP_XCLIENTEXLOCADOR | :CODCOLCFO :CODCFO | |
XALGCONTRATOADMPROPRIETARIO | Locador do Contrato de Administração | MRE_XLOCADOR_IN | MRE_XLOCADOR_FILTER | LKP_XLOCADORXLOCATARIO | :CODCOLCFOPROP :CODCFOPROP |
XALGCONTRATOLOCLOCATARIO | Locatário do contrato de locação | MRE_XLOCATARIO_IN | MRE_XLOCATARIOFILTER | LKP_XLOCATARIO | :CODCOLCFOLOCATARIO :CODCFOLOCATARIO |
FLAN | Lançamentos XIDLAN | MRE_ XIDLANIDLAN_IN | MRE_XIDLANIDLAN_FILTER | LKP_ XIDLANIDLAN | :CODCOLLAN :IDLAN |
XALGIMOVEL | ImóvelXIMOVEL | MRE_XIMOVEL_IN | MRE_XIMOVEL_FILTER | LKP_XIMOVEL | :CODCOLIMOVEL :CODIMOVEL |
XCONTRATOLOC | Contrato de Locação | MRE_XCONTRATOLOC_IN | MRE_XCONTRATOLOC_FILTER | LKP_XCONTRATOLOC | :CODCOLCONTLOC :CODCONTLOC |
XEMPREENDIMENTO | Empreendimento | MRE_XEMPREENDIMENTO_IN | MRE_XEMPREENDIMENTO_FILTER | LKP_XEMPREENDIMENTO | :COD_PESS_EMPR |
XUNIDADE | Unidades | MRE_XUNIDADE_IN | MRE_XUNIDADE_FILTER | LKP_XUNIDADE | :COD_PESS_EMPR :NUM_UNID |
XSUBUNIDADE | Subunidades | MRE_XSUBUNIDADE_IN | MRE_XSUBUNIDADE_FILTER | LKP_XSUBUNIDADE | :COD_PESS_EMPR :NUM_UNID :NUM_SUB_UNID |
XCONDITEMCOBR | Item de Cobrança | MRE_XCONDITEMCOBR_IN | MRE_XCONDITEMCOBR_FILTER | LKP_XCONDITEMCOBR | :CODITEMCOBR |
FCXA | Contas/Caixa | MRE_FCXA_IN | MRE_FCXA_FILTER | LKP_FCXA | :CODCOLCXA :CODCXA |
GCCUSTO | Centros de Custo | MRE_GCCUSTO_IN | MRE_GCCUSTO_FILTER | LKP_GCCUSTO | :CODCOLCCUSTO :CODCCUSTO |
TTBORCAMENTO | Natureza Orçamentária/Financeira | MRE_TTBORCAMENTO_IN | MRE_TTBORCAMENTO_FILTER | LKP_TTBORCAMENTO | :CODCOLNATFINANCEIRA :CODNATFINANCEIRA |
Tipos de Parâmetros Compatíveis
Os tipos de parâmetros listados abaixo são compatíveis e podem ser utilizados como componentes na geração de relatórios dinâmicos.
| Tipo de Parâmetro | Descriçao |
|---|---|
| Decimal | Utilizado para valores numéricos com casas decimais e alta precisão. |
| Float | Utilizado para valores numéricos decimais de ponto flutuante. |
| Duplo (Double) | Utilizado para valores numéricos decimais com maior precisão que o Float. |
| DateTime | Utilizado para data e hora. |
| Texto (String) | Utilizado para informações textuais. |
| Int (Inteiro) | Utilizado para valores numéricos inteiros. |
Exemplos de Utilização
| Expandir | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
Utilize o Multi Record quando o parâmetro permitir a seleção de vários registros. Parâmetro Inserido no Relatório: Cenário: Exemplo de SQL:
Atenção: o uso do operador |
| Expandir | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
Utilize o Lookup quando o parâmetro permitir a seleção de apenas um registro. Parâmetro Inserido no Relatório: Cenário: Exemplo de SQL: Na sentença SQL tem que usar os parâmetros definidos para Lookup na tabela acima na coluna "Parâmetro na Consulta SQL".
|
| Expandir | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
Parâmetros Inseridos no Relatório: Cenário: Exemplo de SQL:
|
Resumo Comparativo
| Tipo | Prefixo | Quantidade de Registros | Uso no SQL |
|---|---|---|---|
| Multi Record | MRE_ | Múltiplos | IN / FILTER |
| Lookup | LKP_ | Único | = |
| Informações | ||
|---|---|---|
| ||
É fundamental verificar sempre o tipo do parâmetro informado e garantir que ele seja compatível com o relatório dinâmico utilizado. |
Como fazer (Relatório com Sentença SQL IN e Componente MultiRecord)
...
Dada as tabelas acima, eu quero que o meu relatório me permita escolher vários contratos de locação que irão fazer parte do resultado dele. Este relatório possui uma sentença SQL com uma clausula IN, então neste caso devemos proceder da seguinte maneira
Para isso então estou dizendo que deve existir o parâmetro MRE_XCONTRATOLOC_IN no relatório como mostra a imagem abaixo:
Na minha cláusula WHERE eu preciso utilizar obrigatoriamente a função string_split. dessa forma, passamos os parâmetros como abaixo:
...
Após a criação da função, a cláusula WHERE da consulta SQL deve obrigatoriamente seguir o padrão:
| Bloco de código | ||
|---|---|---|
| ||
WHERE - AND XALGCONTRATOLOC.CODCONTLOC IN ( SELECT TO_NUMBER(COLUMN_VALUE) FROM TABLE(split_string(:MRE_XCONTRATOLOC_IN, ',')) ) |
Como fazer (Relatório com Sentença SQL FILTER e Componente MultiRecord)
...
Para esse relatório dinâmico ser criado, deve existir o parâmetro MRE_XCONTRATOLOC_FILTER no relatório como mostra a imagem abaixo:
...
O resultado da exibição no relatório dinâmico será o mesmo da exibição quando temos um componente IN, entretanto a o resultado da consulta SQL do relatório será filtrada de acordo com os contratos selecionados. Não é necessário utilizar a função split.
Como fazer (Relatório com Componente Lookup)
...
Neste exemplo, eu quero que o meu relatório me permita escolher somente um contrato de locação que irão fazer parte do resultado dele através de uma lookup. Então neste caso devemos proceder da seguinte maneira.
Para isso então estou dizendo que deve existir o parâmetro LKP_XCONTRATOLOC no relatório como mostra a imagem abaixo:
Na consulta SQL deste relatório, devemos também passar na cláusula WHERE o parâmetro em questão:
...
Dessa forma, ao executar o relatório dinâmico, teremos o seguinte resultado:
| Informações |
|---|
Importante:
|



