Parametros para o Jasper

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:

  1. Pegar o objeto via GET de seu JSP pelo controlador, ou servlet;

  2. Inserir no Map:

Map params = new HashMap(); params.put("param1", param1);

  1. 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.

  1. Troque o tipo do parametro para Object e veja se o comportamento continua.

  2. 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. :slight_smile:

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.