Ótima noite!
Estou querendo passar uma lista de valores pelo parâmetro de entrada do Jaspersoft iReport Designer. Por exemplo:
- Código do Produto: 1,2,6-10
Montagem da query para o banco:
((TABELA.CAMPO = 1 OR TABELA.CAMPO = 2) AND (TABELA.CAMPO >= 6 AND TABELA.CAMPO <= 10)
Eu consegui através do iReport montar o seguinte artificio técnico:
Dois parâmetros de entrada: O primeiro é do tipo string (P_CODIGO) e é onde o usuário preenche os dados, o segundo é do tipo list (P_LISTA) e o usuário não visualiza.
O segundo parâmento recebe a seguinte expressão como valor padrão:
$P{P_CODIGO} != null && $P{P_CODIGO}.trim().length() > 0 ? Arrays.asList($P{P_CODIGO}.trim().replaceAll("([^0-9]+)+", ",").split(",")) : null
No banco de dados faço o seguinte na minha query:
SELECT TAB.CODIGO,
TAB.DESCRICAO
FROM TABELA TAB
WHERE ($X{IN,TAB.CODIGO ,P_LISTA})
Até então consigo montar abrangência somente de valores separados por vírgula, exemplo da entrada do usuário:
- Código do Produto: 1,2,3,4
- Query retorna 4 resultados.
Contudo, não consigo buscar na query valores separados por traço, exemplo da entrada do usuário:
- Código do Produto: 1-4
- Query retorna 2 resultados.
Alguém tem uma solução, aproveito para informar que não tem como trabalhar com IDE, por exemplo pegar o arquivo e colocar dentro de uma IDE manipular via código, somente consigo trabalhar pelas ferramentas e técnicas do JASPER.