IReport pesquisando com parametro lista

6 respostas
C

Tudo bem pessoal?
Estou tentando rodar um sql no meu IReport mais ou menos assim:

SELECT * FROM funcionario WHERE funcionario.id IN (1,2,3)

Pela minha logica seria apenas colocar o parâmetro lista no lugar dos numeros, tipo assim:

SELECT * FROM funcionario WHERE funcionario.id IN $P{valores_id_funcionarios}

Acontece que ele esta me retornando o seguinte erro:

Valor de types desconhecido
parameter type not supported in query : valores_id_funcionarios class java.util.List

Qual o jeito certo de se fazer isso??

6 Respostas

G

Você esta trabalhando com query nativa então não pode passar um List dentro do seu SQL.
Tu vai ter que passar uma string contendo os id’s separadores pelo caractere “,”.

[]'s

C

Achei que o IReport aceitasse o List… :frowning:

Acabei fazendo com string mesmo como vc disse… mas pra isso funcionar tem que colocar uma exclamação depois do P, e um valor default pra esse parâmetro.
Assim:

SELECT * FROM funcionario WHERE funcionario.id IN ($P!{valores_id_funcionarios})
R

Olá boa tarde

Prezados tenho uma consulta de notas fiscais e preciso passar uma lista como parâmetro, apesar deste topico parecer que seria a solução não consegui obter o resultado desejado.

A consulta abaixo aparentemente esta certa mais o editor indica que existe um erro, erro este que só sai se eu colocar aspas simples dentro dos parentesis mais como o campo id_nota é do tipo inteiro eu não o coloquei

Select * From notas As N
Where N.id_nota In ($P!{Plista_notas})  And  
  N.nf_dtcancel Is Null

desta forma apenas o primeiro elemento da lista é utilizado para filtrar ou seja se eu passar 30,31,32,33 vem dados apenas do Id 30

Da forma abaixo ao executar o relatório ocorre um erro por conta do campo id_nota ser do tipo inteiro

Select * From notas As N
Where N.id_nota In ('$P!{Plista_notas}')  And  
  N.nf_dtcancel Is Null

Alguem já passou por situação semelhante?

C

Você não pode utilizar aspas ou aspas simples porque você esta utilizando parâmetros.
Talvez este link possa te ajudar:

Depois posta o resultado.

R

Olá boa noite!

Prezado obrigado pelo retorno, e então eu li com bastante atenção o texto, e sobre a aspa simples se eu não a colocar

Where N.id_nota In ('$P!{Plista_notas}')

o editor do sql indica que existe algo errado na consulta, mais fiz testes com e sem as aspas, e bem lendo o texto que vc indicou a unica coisa que eu não fiz e que esta lá é que eu devo especificar um valor padrão, bem isto eu não entendi muito bem a finalidade porém observei que vc recomendou isto, no meu caso o campo com o id da nota é do tipo inteiro este seria o valor padrão???

agora estou em casa amanhã farei o teste com o valor padrão.

R

Olá boa tarde!

Eu consegui resolver.

O relatório necessita ter um grupo e começar um novo registro em uma nova pagina

Como eu estou usando no parâmetro a exclamação isto quer dizer que em run-time o jasper irá concatenar o conteúdo passado com a consulta então eu devo na minha aplicação passar para o jasper o parâmetro desta forma, exemplificando se eu processei as notas de id´s 30,31,32,33 e 34 que eu devo criar uma variável e concatenar o seguinte conteudo:
var1 = “Where N.id_notafiscal IN (30,31,32,33,34) And N.nf_dtcancel Is Null”

esta var1 que será passada para o meu parâmetro Plista_notas o lance é no meu aplicativo eu montar a string que irá na var1

e o select ficara assim

select *
from notas N
$P!{Plista_notas}

Funcionou blz

Criado 16 de outubro de 2012
Ultima resposta 3 de mar. de 2015
Respostas 6
Participantes 3