como faço para enviar parametros com virgula para o jasper via url, onde esses parametros vão ser usados para realizar uma consulta na instrução SQL q esta dentro do jasper esperando esse parametro?
Tentei mandar direto, porém o jasper nao reconhece isso, pelo que eu debuguei, reconheceu como se fosse outro parametro e ai nao gera o relatório pois nao estou esperando esse parametro…
Alguem sabe como posso receber esses parametros? Ou se existe algum modo de enviar uma string na url com instrução SQL para completar a consulta q quero fazer no jasper
Olá.
No seu programa que executa o JasperReports, você deve ter algum código como:
jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);[code]
Este params, é um Map, e você deve:
-
Pegar o objeto via GET de seu JSP pelo controlador, ou servlet;
-
Inserir no Map:
Map params = new HashMap();
params.put("param1", param1);
- Criar no seu relatório (XML) um campo chamado “param1”, e demais, conforme sua necessidade:
<parameter name="param1" isForPrompting="false" class="java.lang.String"/>
isForPrompting é para saber se ele é requerido por padrão e a class é o tipo do seu argumento.
Agora no seu código SQL dentro do relatório XML você deve inserir a claúsula $P{param1} para avaliar:
[quote]
SELECT * FROM tabela WHERE id_tabela <= $P{param1} ORDER BY descricao
[/quote]
Att.
O meu relatório esta assim, porém a string q quero mandar são números separados por virgula 1,2,3.
Acho q esta acontecendo é o seguinte, o separador de parametros para o jasper é a virgula, entao acho q qndo o jasper lê os parametros enviados pelo código java ele reconhece o segundo numero separado por virgula com outro parametro. Ai da erro na consulta…
OK.
-
Troque o tipo do parametro para Object e veja se o comportamento continua.
-
Se continuar, implemente um Objeto específico que retorna a tal String com vírgulas.
Por exemplo:
package com.test.bean;
[code]public class Consulta {
…
public String getConsulta() {
return “1, 2, 3”;
}
}
[/code]
e no seu relatório:
<parameter name="param1" isForPrompting="false" class="com.test.bean.Consulta"/>
<queryString>
SELECT * FROM tabela WHERE id_tabela <= $P{param1}.getConsulta() ORDER BY descricao
</queryString>
Agora, é só você inserir uma instância “Consulta” no params, do método fillReport().
Att.
Me explica melhor como fazer p importar uma classe p dentro do jasper? se vc tiver um código d exemplo e se puder me mandar seria melhor…
kaiodf@gmail.com
Valeu pela ajuda!!!
Olá Kaio.
Não precisa.
Basta você ter o pacote definido e sua classe, e definir seu uso no relatório xml.
O jasper consegue achar a instância da sua classe sem ajuda. 
Nao funcionou nenhum dos dois modos! o jasper na consulta nao reconhece param1.getConsulta()!
Estou com o src do jasper1.1.1 para tentar mudar o modo de separação dos parametros, acho q se eu mudar para outro separador pode ser q entenda o parametro.
Tu sabe outro meio?
Tem varios tutoriais no forum baixa eles que vai te ajudar muito, como me ajudou a passar parametros blz.
segue em anexo um tutorial interessante.
valeu
Opa.
Primeiramente, acharia interessante atualizar a versão do Jasper. Sua versão está muito antiga. Já está em 3.1.
http://sourceforge.net/project/showfiles.php?group_id=36382&package_id=28579&release_id=488026
Att,
Eu consegui valeu pela ajuda!
Para receber multiplos valores eu tenho q colocar SP!{param1} e assim ele recebe por url mesmo…passou desapercebido
Ótimo Kaio.
Coloque o tópico como [RESOLVIDO] para ajudar a comunidade.
Att.