Parâmetro no IREPORT

2 respostas
F

Tenho um relatório feito no ireport 3.6 onde os dados são montados através de uma query dentro do ireport(em consulta relatórios).
Tenho a necessidade de montar uma cláusula dinamicamente por exemplo:

select * from servico S left join tiposervico TS on (S.id_tiposervico = TS.id_tipoServico)
inner join projeto p on (p.id_projeto = s.id_projeto)
where TS.bl_faturavel = true and s.id_servico in 
(select distinct i.id_servico from dia d left join item i on(d.id_item = i.id_item) 
where d.mes = $P{P_MES} and d.ano = $P{P_ANO}) $P{P_AREA} order by numero

Exemplo:
Caso o usuário tenho nível 1, o parâmetro $P{P_AREA} é uma cláusula, and id_area=1 , se for outro nível eu informo o parâmetro $P{P_AREA} em branco “”.

Na minha classe java que monta o relatório:

if(user.getIdGrupo().getIdGrupo().equals(Constant.GRUPO_NIVEL_USUARIO) || user.getIdGrupo().getIdGrupo().equals(Constant.GRUPO_NIVEL_GERENTE) || user.getIdGrupo().getIdGrupo().equals(Constant.GRUPO_NIVEL_LIDER_EQUIPE)){ 				
		parametros.put("P_AREA", " and p.id_area = " + user.getArea().getIdArea());
	}else{
		parametros.put("P_AREA", "");
	}

Como eu poderia fazer isso funcionar?

2 Respostas

fabin

Olha se te ajuda

Usei este código com HashMap para trabalhar com parametro…

HashMap parametros = new HashMap();//defirnir parametros p/ o relatorio] JasperReport relatorio = JasperCompileManager.compileReport("C:\\ClientesDESDE.jrxml");//endereco onde o relatorio esta JasperPrint jp = JasperFillManager.fillReport(relatorio, parametros, con); JasperViewer jrv = new JasperViewer(jp); jrv.setVisible(true);

F

Obrigado pela dica, mas resolvi utilizando o seguinte comando:

$P!{P_AREA}

O segredo está na exclamação, que ao compilar informa que o parâmetro é uma String.

Criado 28 de junho de 2011
Ultima resposta 28 de jun. de 2011
Respostas 2
Participantes 2