SQL em Parâmetros no IReport

Preciso inserir filtros em minha sql do relatório, mas estes filtros são opcionais, ou seja, caso eu não mande o valor para o relatório, ele nao usa o filtro
por exemplo:

Query do relatório:
SELECT *
FROM TB_MEDICAMENTO
WHERE
CD_MEDICAMENTO = $P{cdMedicamento} //Obrigatório
$P!{sqlMedicamento} //Opcional

Parâmetro sqlMedicamento:
$P{nmMedicamento} != null ?
" AND NM_MEDICAMENTO = " $P{nmMedicamento}
:
" "

Mas não está funcionando =/
Alguém tem alguma dica?

acho que faltou um sinal ali :smiley:

Parâmetro sqlMedicamento:
$P{nmMedicamento} != null ?
" AND NM_MEDICAMENTO = " + $P{nmMedicamento}
:
" "

huaseuhsaeu no exemplo só faltou o " …
no relatório a sintaxe está certa, mas mesmo assim nao funciona =/

como assim… qual eh o erro?

o parametro… a consulta… o resultado dela?

vc esta usando um parametro ($P{nmMedicamento}) para montar o outro parametro ($P!{sqlMedicamento})
sera que este primeiro parametro nao seria um field $F{nmMedicamento}?

tenta ve ae… se der erro… posta mais detalhes

Meu primeiro exemplo está meio confuso, vou criar outro :stuck_out_tongue: (Só não vou mandar o relatório qual estou trabalhando, pq tem muitos parâmetros e sqls)

Vamos supor que eu queira tirar um relatório de Produtos por Venda considerando o Tipo do Produto opcionalmente

Id da Venda: ______________ (Obrigatório) //Mando os dados deste campo para o parâmetro ‘cdVenda’ do tipo Long
Código do Tipo do produto: _____________ (Opcional) //Mando os dados deste campo para o parâmetro ‘cdTipoProduto’ do tipo Long

No relatório:

Crio a sql principal do relatório:

SELECT
B.PRO_CODIGO, B.PRO_DESCRICAO
FROM
TB_VENDA A, TB_PRODUTO B
WHERE
A.VEN_CDPRODUTO = B.PRO_CODIGO
AND A.VEN_CODIGO = $P{cdVenda}
$P!{sqlTipoProduto} //Este será o meu filtro opcional

Crio um filtro dentro do parâmetro ‘sqlTipoProduto’:

$P{cdTipoProduto} != null && $P{cdTipoProduto}.intValue() > 0 ?
" AND B.PRO_CDTIPOPRODUTO = " + $P{cdTipoProduto}
:
""

Meu problema é o seguinte

O relatório está listando apenas os produtos da venda, sem chegar no filtro do tipo de produto.
Por exemplo, eu mando o cdVenda e o cdTipoProduto

Ele lista todos os produtos da venda com o código ‘cdVenda’, sem considerar o ‘cdTipoProduto’

Já verifiquei, o cdTipoProduto está chegando no relatório e é maior que 0.

Talvez seja algum problema na sintaxe da condição, ou na sintaxe utilizo para inserir o filtro ‘sqlTipoProduto’ na sql principal do relatório

fiz um teste aqui e funcionou :smiley:

criei o parametro $P{CD} do tipo long
e um parametro $P{SQL} do tipo String
ai adicionei o Default value no parametro $P{SQL}

$P{CD} != null && $P{CD}.intValue() > 0 ?
" AND ROWNUM <= " + $P{CD}
:
""

ou seja a sintaxe do filtro do parametro esta funcionando certinho
tenta imprimi esse parametro no relatorio $P{sqlTipoProduto} pra vc ver se esta saindo corretamente

acho que o meu projeto que é teimoso =II

tive que fazer do jeito grosseiro mesmo
mandei a sql inteira do Java pro Relatório por parâmetro, fazendo a verificação no java
agora está funcionando =]

mas valeu!