Histórico da Página
Introdução
...
O relatório dinâmico visa de forma transparente e simples, permitir que sejam inseridos parâmetros 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 como 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.
...
Existem duas opções de tipo de retorno de parâmetroscomponentes:
- 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:
...
...
| Tabela | Parâmetro Multirecord IN | Parâmetro Multirecord Filter | Parâmetro Lookup IN | Parâmetro Lookup Filter |
|---|---|---|---|---|
| XCOMPRADOR | MRE_ XCOMPRADOR_IN | MRE_ XCOMPRADOR_FILTER | LKP_ XCOMPRADOR_IN | LKP_ XCOMPRADOR_FILTER |
XCLIENTE | MRE_ XCLIENTE_IN | MRE_ XCLIENTE_FILTER | LKP_ XCLIENTE_IN | LKP_ XCLIENTE_FILTER |
XLOCADOR | MRE_ XLOCADOR_IN | MRE_ XLOCADOR_FILTER | LKP_XLOCADOR_IN | LKP_ XLOCADOR_FILTER |
XLOCATARIO | MRE_ XLOCATARIO_IN | MRE_ XLOCATARIOFILTER | LKP_ XLOCATARIO_IN | LKP_XLOCATARIO_FILTER |
XIDLAN | MRE_ XIDLAN_IN | MRE_XIDLAN_FILTER | LKP_ XIDLAN_IN | LKP_ XIDLAN_FILTER |
XIMOVEL | MRE_ XIMOVEL_IN | MRE_ XIMOVEL_FILTER | LKP_ XIMOVEL_IN | LKP_XIMOVEL_FILTER |
XCONTRATOLOC | MRE_ XCONTRATOLOC_IN | MRE_ XCONTRATOLOC_FILTER | LKP_XCONTRATOLOC_IN | LKP_ XCONTRATOLOC_FILTER |
XEMPREENDIMENTO | MRE_ XEMPREENDIMENTO_IN | MRE_ XEMPREENDIMENTO_FILTER | LKP_ XEMPREENDIMENTO_IN | LKP_ XEMPREENDIMENTO_FILTER |
XUNIDADE | MRE_ XUNIDADE_IN | MRE_ XUNIDADE_FILTER | LKP_ XUNIDADE_IN | LKP_ XUNIDADE_FILTER |
XSUBUNIDADE | MRE_ XSUBUNIDADE_IN | MRE_ XSUBUNIDADE_FILTER | LKP_ XSUBUNIDADE_IN | LKP_ XSUBUNIDADE_FILTER |
Como fazer (Relatório com Sentença SQL IN)
...
Dada as tabelas acima, eu quero que o meu relatório me permita escolher os 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:
...
WHERE
-
...
Na minha cláusula WHERE eu preciso utilizar sempre a função string_split. dessa forma, passamos os parâmetros como abaixo:
| Bloco de código | ||
|---|---|---|
| ||
WHERE - IN (SELECT value AS parametro FROM STRING_SPLIT(:MRE_XCONTRATOLOC_IN, ',')) |
Para entender mais sobre essa função, consulte a página abaixo:
| Informações |
|---|
Surgiu a necessidade no cliente VIPASA de uma tela que contenha vários filtros:
- Seleção por LUC
- Seleção por contrato
- filtro por numero de contrato
- filtro por cliente/fornecedor
- Seleção por competência ( data inicio e fim )
- Seleção por data do contrato ( data inicio e fim )
- Busca por lançamentos ( Texto para buscar no histórico de lançamentos )
A proposta desta demanda está em evolução.
Os componentes são desenhados automaticamente na tela, de acordo com os parâmetros definidos no relatório.
O objetivo, neste momento, é testar apenas os parâmetros visuais — ainda não há o repasse desses parâmetros para a execução do relatório.
Inicialmente, foram criados alguns parâmetros específicos, mas é possível que outros surjam ao longo do desenvolvimento. Os parâmetros definidos até o momento são:
DateTime
Texto
*Int *( até foi implementando para não aceitar texto)
*Lookup *( definir o nome do parametro para que seja exibido o lookup)
*LookupMultiRecord *( definir o nome do parametro para que seja exibido o Lookup multiplo record)
- XCOMPRADOR
- XCLIENTE
- XLOCADOR
- XLOCATARIO
- XIDLAN
- XIMOVEL
- XCONTRATOLOC
- XEMPREENDIMENTO
- XUNIDADE
- XSUBUNIDADE
Definir para lookup:
LKP_XCONTRATOLOC, deverá apresentar o lookup na tela de contrato de locação. ( precisa ser "LKP_XCONTRATOLOC")
Definir para lookup:
MRE_XCONTRATOLOC, deverá apresentar o lookup multiplo na tela de contrato de locação. ( precisa ser "MRE_XCONTRATOLOC")
Criação de novos parametros, que podem ser utilizado no relatório dinâmico,pois antes não estava implementado
1-Criação de parametro decimal
2-Criação de parametro Float / Duplo
3-Aplicação do parametro :MRE_XCONTRATOLOC_IN :
Aplicação do MultiRecord, nessa versão sofreu modificações, deve ser utilizado como "IN" na sentença SQL. que por sua vez,
segue essa documentação,como premissa,
...
ou seja a sentença sql devera esta da seguinte forma:
....
WHERE
(SELECT value AS parametro FROM STRING_SPLIT(:MRE_XCONTRATOLOC_IN, ','))
4-Aplicação do lookup:
Lookup tem em sua maioria 2 valores como chave, e para que seja passado esse valores para a sentença sql, ela deverá conter o valor definido exemplo:
SELECT * FROM XALGCONTRATOLOC
WHERE CODCONTLOC =:CODCONTLOC AND CODCOLCONTLOC=:CODCOLCONTLOC
Caso existe o parametro LKP_XCONTRATOLOC definido no relatório, não será necessário criar o parametro no relatório, pois internamente é verificado se a setença
tem o parametro que compoem a chave primaria, no caso CODCOLCONTLOC, sendo assim é aplicado a o valor do lookup automaticamente.
(sempre é necessário definir o parametro na sentença sql, para ser aplicado autmaticamente, caso contrario, será aplicado apenas o CODCONTLOC)
5- Aplicação de filter, criação apenas do parametro de relatório, onde é aplicado no resultado do relatório ao filtro.
MRE_XCONTRATOLOC_FILTER.
6-criado validação, para que quando o usuário definir algum _filter, os campos precisam estar na sentença sql, caso contrato não tem filtro,
dessa forma, será exibido mensagem de erro. ( só exibe caso o usuário informe os valores no multi record)
O relatório não pode ser gerado porque a sentença SQL não contém os campos [] definidos no filtro [MRE_XIDLAN_FILTER], informado como parâmetro.
O relatório possui o parâmetro definido [
{0}
], porém ele não está presente na sentença SQL.
