iReport - Pesquisa com parametro de data

6 respostas
Frank

Estou criando um relatório no iReport e ele já esta pronto. Só que a minha query contém um parametro de datas que informa uma data inicial e uma data final e este parametro tem que ser passado pelo programa que eu estou fazendo. Eu gostaria de criar no relatório duas variáveis, Data Inicial e Data Final, e colocar no parametro de datas da query para que eu informasse essas datas no programa e fizesse a pesquisa através destes parametros.
Como eu poderia criar essas variaveis e como eu posso informá-la na query do relatório ?

6 Respostas

thiagorani

Cria as variaveis :

Ex:
pstrDataInicio e pstrDataFim

Na Query voce coloca

… AND (tabela.campo = $P{pstrDataInicio})
AND (tabela.campo = $P{pstrDataFim});

Voce precisa setar esses parametros, que virao do seu programa chamador, assim :

Map parameters = new HashMap();

parameters.put("pstrDataInicio", dtInicio.getText());
parameters.put("pstrDataFim", dtFim.getText());

Eu fiz assim e funcionou.

[]´s

thiagorani

Melhorando algumas coisa :

Clausula where :

AND (to_char(tabela.campo,‘dd/mm/yyyy’) = $P{pstrDataInicio})
AND (to_char(tabela.campo,‘dd/mm/yyyy’) = $P{pstrDataFim})

[]´s

Frank

Eu fiz o seguinte: Entrei em Database, Report query. Eu escolhi uma conexão e na clausula Report query eu coloquei a minha query com as alterações informadas na ajuda passada para mim:

(SELECT TO_CHAR(SYSDATE, ‘DD/MM/YYYY HH24:MI:SS’) AS DATA, ENTIDADE, COUNT(ENTRY_ID) AS TOTAL
FROM MAQUINAS
WHERE OPERADORA = ‘XXXX’ AND EQUIPAMENTO = ‘XXXX’ AND FABRICANTE = ‘XXXX’
GROUP BY ENTIDADE)

UNION

(SELECT TO_CHAR(SYSDATE, ‘DD/MM/YYYY HH24:MI:SS’) AS DATA, TIPO, COUNT(NUMERO_DA_OS) AS TOTAL
FROM SAS_OS
WHERE REGISTRO_DO_ATENDIMENTO >= $P{DataInicial} AND REGISTRO_DO_ATENDIMENTO <= $P{DataFinal} AND OPERADORA = ‘XXXX’ AND
(TIPO = ‘XXXX’ OR TIPO = ‘XXXX’) AND EQUIPAMENTO = ‘XXXX’ AND
FABRICANTE = ‘XXXX’ AND (STATUS = 3 OR (STATUS = 4 AND NUMERO_DE_VISITAS > 0))
GROUP BY TIPO)

Só que apareceu um erro quando eu cliquei em Read files, porque se eu salvar esta query, depois for visualizar o relatório em PDF ou em outro formato ele não acha, irá trazer os valores em nulo (não irá achar mesmo porque os parametros das datas não estão informados).
Será que o teste com parametros de datas só podem ser feitos via programa ou não pode passar este parametro no relatório ?

thiagorani

Correto.

Assim adicionado os parametros, não será mais possivel a visualização do relatório via iReport.
Teste direto de sua aplicação.

[]´s

Frank

Obrigado pela ajuda Thiago, irei faze meus testes pela aplicação.

leoseagal

Pessoal, estou com um problema parecido…

Eu passo um parâmetro na aplicação no formato Date ?Tue Jun 02 00:00:00 BRT 2009?
E minha query do ireport esta conforme segue:

AND AGENDAMENTO.AGDDAT = $P{AGDDAT}

Mas o relatório não é gerado, se eu passo os parâmetros pelo prompt do ireport ele gera corretamente.
Notem na imagem anexa que o próprio ireport já apresenta a data padrão no formato ?Ter 02/06/2009?

Alguém sabe como resolver?

Criado 13 de março de 2003
Ultima resposta 2 de jun. de 2009
Respostas 6
Participantes 3