- Criado por Wesley Avelino De Carvalho, última alteração em 26 nov, 2019
Índice:
Objetivo:
Este documento tem por objetivo orientar a utilização do componente Filtro do Reports como parâmetro para uma consulta SQL utilizada no relatório.
Introduçã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”. Depois de acessar o design do relatório selecione o menu “Inicio | Estrutura | Filtros”. Para exemplo incluiremos um filtro “Chapa” no relatório.
Informações sobre regras e condições de criação de um filtro acesse: Filtros
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”.
Depois de criado o filtro em seu relatório acesse a barra “Caixa de Ferramentas”, selecione o controle do tipo “Filtro” e arraste-o para estrutura do seu relatório.
Depois de incluído o controle do tipo Filtro no seu relatório é necessário configurá-lo para que seja 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 passiveis 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.
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.
SELECT PFUNC.DATADEMISSAO FROM PFUNC ( NOLOCK ) WHERE PFUNC.DATADEMISSAO BETWEEN CONVERT(DATE, :Filtro1, 103) AND CONVERT(DATE, :Filtro2, 103) AND PFUNC.CHAPA = :CHAPA_S
Produto: Framework
Versão: 12.1.XX
Processo: Filtros como parâmetros em consultas SQL
Relatório Utilizado: Exemplo Filtro em Consulta SQL.zip (Versão: 12.1.27)