Estou criando meus relatórios pelo ireport, mas acontece que quero passar parâmetros condicionais… ou seja… eu tenho três parâmetros… e dois deles não são obrigatórios… o usuário pode escolher por completa-lo ou não… na query no ireport… eu precisaria fazer uma verficação se esses parâmetros são nulos ou não… e caso eles fossem nulos eu não os colocaria na cláusula where do meu select…
Ou seja eu preciso mudar o critério de pesquisa dinamicamente… tem como ?..
ou ainda escolher o campo para ordenar o select… tipo o usuário pode escolher se ordena o relatório por x ou y…
Não sei se deu pra entender direito…
Basicamente, eu queria saber se tem como modificar o select dinamicamente, ou fazer algo do tipo:
SELECT * FROM
TABLE1
INNER JOIN TABE2 ON…
WHERE (TABLE1.CAMPO1 = $P{PARAMETRO} OR $P{PARAMETRO} IS NULL)
AND (TABLE1.CAMPO2 = $P{PARAMETRO2} OR $P{PARAMETRO2} IS NULL)
se der tudo errado, você pode fazer a pesquisa no seu programa e passar um List para o iReport, isso evita regra de negócio em relatório, e por experiência própria, isso pode dar creca, hehehe.
olá, eu estou enfrentando exatamente o mesmo problema
eu tenho o select
c.dataPag is null
and p.numeroEndereco = $P{idRua}
and c.id = $P{NumeroConta}
and c.dataVence between $P{dataincio} and $P{datafim}
porem os campos nao sao obrigatorios
para data eu ate pensei em colocar um case,
algo como
se o usuario nao digitar nada seria entre 1900 e 2100
porem para os campos de rua e numero de conta, o ideal seria nem os considerar ja que o cliente pode resolver gerar todas as contas ou de todas as ruas.
nesse caso eu preciso que o codigo anterior vire esse
c.dataPag is null
//-- and p.numeroEndereco = $P{idRua} // linha desconsiderada
//-- and c.id = $P{NumeroConta} // linha desconsiderada
//-- and c.dataVence between $P{dataincio} and $P{datafim} // linha desconsiderada
o jeito mais simples é tirar esse sql do relatório e fazer em java, montar a lista e passar para o relatório por JRBeanCollectionDataSource. Pronto é melhor pra vc e pra pessoa que for dar manutenção…