Páginas filhas
  • TOTVS Construção Gestão de Imóveis - Shopping - Relatórios - Relatório Dinâmico

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

É 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_. Quando temos o parâmetro Multirecord, ele irá interagir com consultas SQL IN ou FILTER como exemplifica a tabela abaixo.
  • Lookup: Quando há a seleção somente de um registro em determinado componente. 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çãoParâmetro MULTIRECORD (IN)Parâmetro MULTIRECORD (FILTER)Parâmetro LOOKUP 
Parâmetro no RelatórioParâmetro na Consulta SQL

FCFO

Cliente / Fornecedor
TabelaParâmetro Multirecord INParâmetro Multirecord FilterParâmetro Lookup 
XCOMPRADOR MRE_XCOMPRADOR_INMRE_XCOMPRADOR_FILTERLKP_XCOMPRADOR
XCLIENTEMRE_XCLIENTE_INMRE_XCLIENTE_FILTERLKP_XCLIENTEXLOCADOR:CODCOLCFO :CODCFO

XALGCONTRATOADMPROPRIETARIO

Locador do Contrato de AdministraçãoMRE_XLOCADOR_INMRE_XLOCADOR_FILTERLKP_XLOCADORXLOCATARIO:CODCOLCFOPROP :CODCFOPROP

XALGCONTRATOLOCLOCATARIO

Locatário do contrato de locaçãoMRE_XLOCATARIO_INMRE_XLOCATARIOFILTERLKP_XLOCATARIO:CODCOLCFOLOCATARIO :CODCFOLOCATARIO

FLAN

Lançamentos XIDLANMRE_XIDLANIDLAN_INMRE_XIDLANIDLAN_FILTERLKP_XIDLANIDLAN:CODCOLLAN :IDLAN

XALGIMOVEL

ImóvelXIMOVELMRE_XIMOVEL_INMRE_XIMOVEL_FILTERLKP_XIMOVEL:CODCOLIMOVEL :CODIMOVEL

XCONTRATOLOC

Contrato de LocaçãoMRE_XCONTRATOLOC_INMRE_XCONTRATOLOC_FILTERLKP_XCONTRATOLOC:CODCOLCONTLOC :CODCONTLOC

XEMPREENDIMENTO

EmpreendimentoMRE_XEMPREENDIMENTO_INMRE_XEMPREENDIMENTO_FILTERLKP_XEMPREENDIMENTO:COD_PESS_EMPR

XUNIDADE

UnidadesMRE_XUNIDADE_INMRE_XUNIDADE_FILTERLKP_XUNIDADE:COD_PESS_EMPR :NUM_UNID

XSUBUNIDADE

SubunidadesMRE_XSUBUNIDADE_INMRE_XSUBUNIDADE_FILTERLKP_XSUBUNIDADE:COD_PESS_EMPR :NUM_UNID :NUM_SUB_UNID

XCONDITEMCOBR

Item de CobrançaMRE_XCONDITEMCOBR_INMRE_XCONDITEMCOBR_FILTERLKP_XCONDITEMCOBR:CODITEMCOBR

FCXA

Contas/CaixaMRE_FCXA_INMRE_FCXA_FILTERLKP_FCXA:CODCOLCXA :CODCXA

GCCUSTO

Centros de CustoMRE_GCCUSTO_INMRE_GCCUSTO_FILTERLKP_GCCUSTO:CODCOLCCUSTO :CODCCUSTO

TTBORCAMENTO

Natureza Orçamentária/FinanceiraMRE_TTBORCAMENTO_INMRE_TTBORCAMENTO_FILTERLKP_TTBORCAMENTO:CODCOLNATFINANCEIRA :CODNATFINANCEIRA


Tipos de Parâmetros Compatíveis

Os tipos de parâmetros listados abaixo também são compatíveis e podem ser passados utilizados como componentes para geração do relatório dinâmico:

  • Decimal
  • Float
  • Duplo
  • DateTime
  • Texto
  • Int

na geração de relatórios dinâmicos.

Tipo de ParâmetroDescriçao
DecimalUtilizado para valores numéricos com casas decimais e alta precisão.
FloatUtilizado para valores numéricos decimais de ponto flutuante.
Duplo (Double)Utilizado para valores numéricos decimais com maior precisão que o Float.
DateTimeUtilizado para data e hora.
Texto (String)Utilizado para informações textuais.
Int (Inteiro)Utilizado para valores numéricos inteiros.


Exemplos de Utilização

Expandir
titleMulti Record (MRE_)

Utilize o Multi Record quando o parâmetro permitir a seleção de vários registros.

Parâmetro Inserido no Relatório:
MRE_XCONTRATOLOC_IN

Cenário:
O usuário deseja selecionar um ou mais contratos.

Exemplo de SQL:

Bloco de código
languagesql
themeDJango
firstline1
titleSelect
SELECT XALGCONTRATOLOC.CODCOLCONTLOC, XALGCONTRATOLOC.CODCONTLOC,XALGCONTRATOLOC.NUMCONTLOC, XALGCONTRATOLOC.DTVIGENCIAINICONTLOC
  FROM XALGCONTRATOLOC (NOLOCK)
 WHERE XALGCONTRATOLOC.CODCOLCONTLOC = 1
   AND XALGCONTRATOLOC.CODCONTLOC IN (SELECT [VALUE] AS PARAMETRO FROM STRING_SPLIT(:MRE_XCONTRATOLOC_IN, ','))

Atenção: o uso do operador FILTER pode impactar o desempenho, dependendo da complexidade da sentença SQL e da quantidade de registros retornados para aplicação do filtro.

Expandir
titleLookup (LKP_)

Utilize o Lookup quando o parâmetro permitir a seleção de apenas um registro.

Parâmetro Inserido no Relatório:
LKP_GCCUSTO

Cenário:
O usuário precisa filtrar por um centro de custos.

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

Bloco de código
languagesql
themeDJango
firstline1
titleSelect
SELECT XALGEVENTOFINANCEIRODISTRIBUIC.CODCOLEVENTFIN, XALGEVENTOFINANCEIRODISTRIBUIC.CODEVENTFIN,
       FLAN.CODCOLIGADA, FLAN.IDLAN, FLAN.VALORORIGINAL,
       FLAN.CODCCUSTO
  FROM XALGEVENTOFINANCEIRODISTRIBUIC (NOLOCK)
          JOIN FLAN (NOLOCK)
            ON FLAN.CODCOLIGADA = XALGEVENTOFINANCEIRODISTRIBUIC.CODCOLEVENTFIN
           AND FLAN.IDLAN = XALGEVENTOFINANCEIRODISTRIBUIC.IDLAN
           AND FLAN.CODCOLIGADA = :CODCOLCCUSTO  AND FLAN.CODCCUSTO = :CODCCUSTO
 WHERE XALGEVENTOFINANCEIRODISTRIBUIC.CODCOLEVENTFIN = 1
Expandir
titleJuntos (Multirecord e Lookup)

Parâmetros Inseridos no Relatório:
MRE_IDLAN_IN e LKP_GCCUSTO

Cenário:
O usuário necessita filtrar os dados por um centro de custos específico e, simultaneamente, selecionar um ou mais lançamentos associados ao centro de custos informado.

Exemplo de SQL: 

Bloco de código
languagesql
themeDJango
firstline1
titleSelect
SELECT XALGEVENTOFINANCEIRODISTRIBUIC.CODCOLEVENTFIN, XALGEVENTOFINANCEIRODISTRIBUIC.CODEVENTFIN,
       FLAN.CODCOLIGADA, FLAN.IDLAN, FLAN.VALORORIGINAL,
       FLAN.CODCCUSTO
  FROM XALGEVENTOFINANCEIRODISTRIBUIC (NOLOCK)
          JOIN FLAN (NOLOCK)
            ON FLAN.CODCOLIGADA = XALGEVENTOFINANCEIRODISTRIBUIC.CODCOLEVENTFIN
           AND FLAN.IDLAN = XALGEVENTOFINANCEIRODISTRIBUIC.IDLAN
           AND FLAN.CODCOLIGADA = :CODCOLCCUSTO  AND FLAN.CODCCUSTO = :CODCCUSTO
           AND FLAN.IDLAN IN(SELECT [VALUE] AS PARAMETRO FROM STRING_SPLIT(:MRE_IDLAN_IN, ','))
WHERE XALGEVENTOFINANCEIRODISTRIBUIC.CODCOLEVENTFIN = 1


Resumo Comparativo

TipoPrefixoQuantidade de RegistrosUso no SQL
Multi RecordMRE_MúltiplosIN / FILTER
LookupLKP_Único=



Informações
titleRecomendações de configuração

É fundamental verificar sempre o tipo do parâmetro informado e garantir que ele seja compatível com o relatório dinâmico utilizado

Informações
titleimportante

Recomendações de configuração

É fundamental verificar sempre o tipo do parâmetro informado e garantir que ele seja compatível com o relatório dinâmico utilizado.

Além disso, evite utilizar o caractere ponto ( . ) no nome da sentença SQL, pois isso impede que algumas validações internas sejam executadas corretamente.

Exemplo de nomenclatura:

  • Incorreto: REL.01

  • Correto: REL_01

Prefira o uso de underscore (_) no lugar de ponto. Isso assegura que todas as validações e processamentos sejam aplicados adequadamente no relatório.


Como fazer (Relatório com Sentença SQL IN e Componente MultiRecord)

...