Páginas filhas
  • Alteração no mecanismo de execução de relatórios .Net

Versões comparadas

Chave

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

Índice:


       

Índice
exclude.*ndice:

Objetivo:


       A partir da versão 12.1.23 implementamos uma melhoria na execução de relatórios do RM Reports que tende a evitar que relatórios possam gerar o que chamamos de "produto cartesiano". Esta melhoria poderá acarretar inconsistências em relatórios quando houverem bandas com mais de uma tabela e o relacionamento entre seus campos estiverem incorretos.

Detalhes da melhoria:


       Esta alteração tende a obter ganho de performance na execução dos relatórios. Explicaremos como era o cenário antes e pôs alteração.

Informações
iconfalse
Deck of Cards
idExemplos
Card
idExemplo 1
labelCenário Anterior
titleExemplo 1
Deck of Cards
idEstruturaAnterior
Card
idEstruturaAnterior
labelBandas do Relatório
titleEstruturaAnterior

No exemplo do cenário anterior utilizaremos a seguinte estrutura no relatório;

1) - Banda pai (Detalhe1) = Ligada na tabela PFUNC

1.1) - Banda filha (SubDetalhe1)= Ligada na tabela PFDEPEND

Card
idEstruturaAnterior
labelControles do Relatório
titleEstruturaAnterior

Em cada banda utilizamos os seguintes controles (no exemplo são utilizados controles de campo da base);

1) - Banda pai:

[PFUNC.CODCOLIGADA, PFUNC.CHAPA, PFUNC.SALARIO e PPESSOA.CPF]

Aviso
iconfalse

(informação) Neste exemplo temos um controle da tabela principal ligado a outro controle da tabela secundária (PPESSOA.CPF). 

1.1) - Banda filha:

[PFDEPEND.CODCOLIGADA e PFDEPENDE.NOME]

Card
idEstruturaAnterior
labelFiltros do Relatório
titleEstruturaAnterior

Filtro do relatório utilizados na banda pai do relatório.

1) - Banda pai: PFUNC.CODCOLIGADA = 1

                AND PPESSOA.CPF = '0027515458'

Aviso
iconfalse

(informação) Neste caso temos uma parte do filtro ligado a tabela secundária da banda pai.

Card
idEstruturaAnterior
labelMecanismo de Execução
titleEstruturaAnterior

Quando o relatório é executado, o mecanismo de execução vai gerar duas sentenças sql’s dinamicamente baseadas nas configurações das bandas e controles.

Nesse exemplo serão geradas duas sentenças sql’s:

  1. A) - Primeira sentença: relacionada a banda pai;

SELECT PFUNC.CODCOLIGADA,
               PFUNC.CHAPA,
               PFUNC.SALARIO,
               PPESSOA.CPF
FROM PFUNC
LEFT OUTER JOIN PPESSOA (NOLOCK) ON (PFUNC.CODPESSOA = PPESSOA.CODIGO)
WHERE PFUNC.CODCOLIGADA = 1
      AND PPESSOA.CPF = '0015154515'

Obs:

Aviso
iconfalse

(informação)  Na sentença acima, o mecanismo adiciona uma clausula (Left Outer Join) para tabela PPESSOA.

Isso ocorre devido ao controle "CPF" existente na banda pai pois o mesmo não existe na tabela principal da banda "PFUNC".

  1. B) - Segunda sentença: relacionada a banda filha:

 

            select

SELECT PFDEPEND.CODCOLIGADA,
PFDEPENDE.NOME

            from

FROM PFDEPEND

                       

INNER JOIN PFUNC (NOLOCK)

ON (PFUNC.CODCOLIGADA = PFDEPEND.CODCOLIGADA
                                                    AND PFUNC.CHAPA = PFDEPEND.CHAPA)

            where

WHERE PFUNC.CODCOLIGADA = 1

Obs: Perceba
Aviso
iconfalse

(informação)  Perceba que a query acima

vai trazer

retornará todos os dependentes de todos os funcionários da

coligada

Coligada 1.

           

Nesse caso, teremos

um problema grave

considerado consumo de memória e performance.

Card
idExemplo 2
labelCenário Pós Melhoria
titleExemplo 2
Deck of Cards
idEstruturaAnterior
Card
idEstruturaAnterior
labelBandas do Relatório
titleEstruturaAnterior


Card
idEstruturaAnterior
labelControles do Relatório
titleEstruturaAnterior


Card
idEstruturaAnterior
labelFiltros do Relatório
titleEstruturaAnterior



Informações
iconfalse
Informações
iconfalse

Produto: Framework

Informações
iconfalse

Versão: 12.1.23 ou superiores

Informações
iconfalse

Processo: Execução de Relatórios

Informações
iconfalse
Informações
iconfalse

Status: Em andamento

Informações
iconfalse

Data:

Informações
iconfalse

Autores:

Aline Cristina Braz de Oliveira

Erlon Cesar Lima De Freitas

Gustavo Naves De Castro

Igor Macedo Cardoso

Lorena Roberta de Paiva Braga

LUCAS ANDRADE DE OLIVEIRA REIS

Renan Ramos Moura

TIAGO ANDRADE GOMES SILVEIRA

Wesley Avelino De Carvalho