Parametros no ireport usando IN e OR

Pessoal estou com o seguinte problema, dentro do ireport tenho uma query que tem um parametro que se chama produto, posso colocar varios codigos de produtos nele, mas se eu nao colocar nem um codigo ,ele tem que me trazer todos os produtos, ou seja, desconsiderar esse parametro, quando uso o sinal de igualdade da certo dessa maneira.

and (b8_produto = $P{iest001-01} or $P{iest001-01} is null)

mas, quando uso o IN , nao funciona da erro,

and (b8_produto in ($P!{iest001-01} ) or $P{iest001-01} is null)

se eu usar o IN sozinho e colocar conteudo no parametro funciona.

a lógica do in não é assim…

A Sintaxe é
IN(CAMPO,CAMPO2,CAMPO3)

isso mesmo, mas no ireport é desse jeito ai

Não é não, segue a documentação do JasperSoft dizendo como é utilizada a cláusula IN:

dessa maneira q uso funciona daniel, ele so nao funciona quando coloco o OR junto, igual passei no exemplo, esse exemplo q vc me passou ai no manual eu ja tentei fazer ele, mas nao consegui fazer fucnionar nao, vc sabe como funciona ?

Sim, é só colocar os 3 parâmetros:

WHERE $X{IN, nome_do_campo_na_tabela, nome_do_parametro}

Lembrando que é passado o nome do parâmetro somente, sem nenhum $P nem nada.

Daniel ele da erro, veja como esta meu select.

select * from (
select b8_produto codpro,b1_desc despro,b8_lotectl lote,sum(b8_saldo) saldo,to_date(b8_dtvalid,‘yyyymmdd’) validade from TOTVS.sb8010 a, TOTVS.sb1010 b
where
a.d_e_l_e_t_=’ ’
and b.d_e_l_e_t_= ’ ’
and a.b8_produto=b.b1_cod
and a.b8_dtvalid <= $P{iest001-02}
and $X{IN, b8_produto, iest001-01}
group by b8_produto,b1_desc,b8_lotectl,to_date(b8_dtvalid,‘yyyymmdd’))
where saldo > 0 order by despro,validade

Que erro ele da? Será que não seria a falta de um alias?

tentei passar o parametro com as chaves sem as chaves, com $P sem ele, de todo jeito nao funciona. da erro

quando coloco o parametro sem nada so o nome dele ai da esse erro

net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRRuntimeException: Invalid type java.lang.String for parameter iest001-01 used in an IN clause; the value must be an array or a collection.
at com.jaspersoft.studio.editor.preview.view.control.ReportControler.fillReport(ReportControler.java:511)

Ué aí está explicado, como é que você vai passar uma série de valores para um parâmetro sendo que ele é uma String e não uma Collection ou um Array?

passo assim, inclusive funciona daquela outra forma q te falei

‘24400195’,‘33200037’

agora dessa maneira q vc me disse ai , desconheço , nao faço a minima ideia

o que devo fazer ?

Você não sabe o que é um array ou uma Collection em java?
Você tem que alterar o tipo de dado do seu parâmetro iest001-01 de String para o que ele é realmente correspondente… É uma List de valores que você passa pro parâmetro? Se for então o iest001-01 precisa ser do tipo Collection e não uma String.
Concorda comigo que String é um objeto só e não uma Lista de Objetos?

logico que sei amigo, sou formado em analise de sistema a 20 anos, vc quer me ajudar ou vc quer me sacanear ? eu nao conheço java , estou fazendo um relatorio no ireport, os relatorio no ireport aqui sao usados na plataforma totvs (advpl)

coloquei ele como collection, mas deu erro tambem

da o seguinte erro

Foi uma pergunta genuína, já que o atributo estava como String e quando perguntei como os dados eram guardados você não me respondeu, não estou sacaneando ninguém.
E se você quer pedir ajuda no fórum ou em qualquer lugar aconselho você a tratar as pessoas com respeito.
Neste print que você mandou o terceiro argumento continua sendo o parâmetro com a sintaxe $P, a sintaxe correta é somente o nome do parâmetro.

bem, daniel, nao vou discutir isso com vc nao, mas, quem faltou com respeito foi vc comigo, mas deixa isso pra la, talvez eu tenho entendido errado ai mesmo ta bom, obrigado.

eu consegui fazer a collection, mas nao pode fucnionar assim, pq eu trabalho com advpl protheus preciso que seja passado um parametro string, para ser usado com IN, (‘123456’,‘654321’) entendeu ? na collection eu adiciono la os elementos, mas mesmo assim ele nao traz a consulta, da erro, se alguem puder me ajudar ai pessoal, so falta isso pra terminar aqui meuprojeto, obrigado a todos.