Olá pessoal, eu construí um relatório teste para praticar meus conhecimentos em iReport e estou com o seguinte problema:
Eu fiz um relatório que exibe a lista de cidades cadastradas no banco com uma quebra por estado e para isso relatei a seguinte query:
SELECT * FROM cidade WHERE uf [b]IN/bORDER BY uf, nm_cidade
O parâmetro p_uf serve para que o usuário especifique quais estados quer ter as cidades relatadas, porém quando eu passo neste parâmetro um único UF ele aceita, mas quando tento passar vários UF’s (como por exemplo SC, SP, RS) ele gera um relatório vazio. “The document has no pages”
Alguém pode me ajudar a solucionar isso? É urgente, pois estou sendo muito cobrado no trabalho para aprender a usar o iReport
Cara, eu estou passando os parâmetros pelo próprio visualisador do iReport marcando o parâmetro com a opção “Use as a prompt”, assim ele me pede o valor do parâmetro quando eu clico em Execute.
Alguem mais?? Eu repito, é muito importante pois preciso dominar o iReport (pelomenos o suficiente para fazer os relatórios que a empresa precisa) até sexta-feira.
Bom dia, vi que tinha que resolver ate ontem seu problema sexta né??? Entao eu tive este mesmo problema, tente fazer o seguinte. Repare se você fizer o seguinte:
SELECT * FROM cidade WHERE codigo IN(‘3’,‘4’)
Ao fazer isso ele retornara, mas veja que se passar via parametro concorda que vai receber romente o ‘3’ ‘4’ sem a virgula??? Eu tive que criar uma funcao antes de enviar que faça o seguinte, ele pega e faz assim, o primeiro parametro recebera ‘PARAMETRO’ e depois concatena uma virgula e assim por diante so que o ultimo nao poderá receber uma virgula somente ‘PARAMETRO’ ficando assim ‘PARAMETRO’,‘PARAMETRO’,‘PARAMETRO’,‘PARAMETRO’,‘PARAMETRO’ onde seu parametro do IREPORT ira receber este array corratamente $P{p_codigo} isso resolve com certeza.
Faz o seguinte: De uma System.out.print ou um JOptionPanel com o valor que o parametro esta passando para ver o que o paramentro esta passando ai ira ver que esta passando sem a virgula
WHERE uf IN(‘SC’‘SP’‘RS’)
o correto é assim
SELECT * FROM cidade WHERE uf IN(‘SP’,‘PR’, ‘MG’, ‘RO’)
o por isso de ter que utilizar uma funcao para adicionar virgula, so nao se esqueca que o ultimo do array nao recebe virgula. Abraço.
Eu tenho esse mesmo problema…
Mas a questão é que, não sei se é o iReport ou o form q qndo envia o parametro como string, passa tb uma ’ (aspas) no inicio e no fim… Entao ao executar a query fica dessa forma:
WHERE uf IN (‘SC, SP, RS’) e na verdade deveria ser WHERE uf IN (‘SC’, ‘SP’, ‘RS’). Passando os parametros com ’ (aspas) ele executa WHERE uf IN (’‘SC’, ‘SP’, ‘RS’’) e tb n da certo. Eu acho q a solução seria remover essas ’ (aspas) que sao inseridas automaticamente pela classe que interage com o iReport.
Cara… consegui resolver o meu problema.
É só vc colocar um ! dpois do P. ex: $P!{parametro}
E enviar para o parametro os valores com aspas assim: ‘SP’, ‘MG’, ‘RS’.