Tempo aproximado para leitura: 00:03:00 min
Dúvida
Como utilizar Filtro como parâmetro em consultas SQL no RM Reports?
Ambiente
Cross Segmentos - TOTVS Backoffice (Linha RM) - RM BI - Todas as versões
Solução
É possível utilizar filtros de um relatório como parâmetros para execução de consultas SQL, desde que o relatório possua um ou mais controles do tipo "Filtro".
Para inclusão de um filtro no relatório acesse seu design. Para isso selecione o relatório, clique no menu Processos | Editar Estrutura. Após acessar o design do relatório selecione o menu Inicio | Estrutura | Filtros. Para exemplo, incluiremos um filtro Chapa no relatório.
Para inserir o controle do tipo Filtro, primeiramente é necessário criar um filtro em seu relatório, conforme mencionado no processo Inserindo Filtro no Relatório(aviso).
Após criado o filtro em seu relatório acesse a barra Caixa de Ferramentas (informação), selecione o controle do tipo Filtro e arraste-o para estrutura do seu relatório.
Após incluído o controle do tipo Filtro no seu relatório é necessário configurá-lo para ser apresentada as informações desejadas. Lembramos que o valor configurado será o valor repassado a consulta SQL.
Para exemplo configuraremos o filtro chapa criado no processo Inserindo Filtro no Relatório para que apresente o valor da chapa somente e não toda a condição do filtro que seria Chapa = ‘00001’.
Selecione o controle e acesse as propriedades deste controle teclando F4 em seu teclado. No grupo de propriedades Diversos selecione na propriedade Filtro o valor Filtro Relatório. Em seguida na propriedade Clausula selecione o filtro desejado e para finalizar em Valor selecione a opção para que o valor do filtro seja apresentado, no exemplo utilizaremos o valor da chapa.
Lembramos que filtros são passíveis de criação somente em relatórios com uma fonte de dados do tipo tabela associada a banda do relatório.
Para habilitar a barra de Caixa de Ferramentas acesse o menu Exibição | Janelas | Caixa de Ferramentas.
Para exemplificarmos a usabilidade do filtro como parâmetro criarmos a seguinte consulta SQL para incluí-la no relatório.
SELECT PFDEPEND.NOME,
PFDEPEND.DTNASCIMENTO,
PCODPARENT.DESCRICAO AS PARENTESCO
FROM PFDEPEND ( NOLOCK )
INNER JOIN PCODPARENT ( NOLOCK )
ON ( PFDEPEND.GRAUPARENTESCO = PCODPARENT.CODINTERNO )
WHERE PFDEPEND.CHAPA = :FILTRO1
Esta consulta SQL foi adicionada ao sub-detalhe do relatório. A estrutura do relatório resultou ficou da seguinte forma.
Como parâmetro utilizaremos o nome do Controle Filtro (Filtro1) na condição da consulta SQL. Desta forma ao executarmos o relatório o sistema irá utilizar o valor do Controle Filtro como parâmetro. O resultado do relatório será o seguinte.
Para uso de filtros que utilizam valores de dada como parâmetros é necessário que a consulta SQL tenha um tratamento de conversão do parâmetro para correta execução.
Neste exemplo abaixo temos uma consulta SQL sem nenhum tratamento para receber o valor do Controle Filtro.
Consulta Incorreta:
SELECT PFUNC.DATADEMISSAO
FROM PFUNC ( NOLOCK )
WHERE PFUNC.DATADEMISSAO BETWEEN :Filtro1 AND :Filtro2
AND PFUNC.CHAPA = :CHAPA_S
Neste exemplo a mesma consulta SQL, porém com os devidos ajustes para que o valor data do filtro seja compreendido corretamente.
Consulta Correta:
SELECT PFUNC.DATADEMISSAO
FROM PFUNC ( NOLOCK )
WHERE PFUNC.DATADEMISSAO BETWEEN CONVERT(DATE, :Filtro1, 103)
AND CONVERT(DATE, :Filtro2, 103)
AND PFUNC.CHAPA = :CHAPA_S
0 Comentários