Jasper IReport filtro sql por parametro

10 respostas
T

Comecei a utilizar o jasper IReport e aprender atravez de algumas video aulas, mas não encontrei nenhuma maneira de enviar um filtro por parametro pois ele assume como string e coloca ‘’ na frente
por exemplo:
SELECT * FROM CLIENTES WHERE NOME = FULANO
ao inves de colocar o WHERE NOME
colocar um parametro para poder manipular o filtro da minha maneira, e adicionar coisas a mais se for preciso.

por exemplo:

SELECT * FROM CLIENTES $P{FILTRO};

me desculpem se a pergunta é muito idiota , mas infelizmente não encontrei uma maneira de fazer isso;.
obrigado

10 Respostas

P
Map<String,String> paramJasper = new HashMap<String,String>;
paramJasper.put("FILTRO","WHERE NOME = FULANO");

mais ou menos assim?

ou então:

Map<String,String> paramJasper = new HashMap<String,String>;
paramJasper.put("FILTRO","FULANO");

e na sua query no ireport vc deixa:

[code]SELECT * FROM CLIENTES WHERE NOME = $P{FILTRO}[code]

P.S: acho q o post seria em "frameworks,etc".

att,

T
pedruhenrik:
Map<String,String> paramJasper = new HashMap<String,String>;
paramJasper.put("FILTRO","WHERE NOME = FULANO");

mais ou menos assim?

ou então:

Map<String,String> paramJasper = new HashMap<String,String>;
paramJasper.put("FILTRO","FULANO");

e na sua query no ireport vc deixa:

[code]SELECT * FROM CLIENTES WHERE NOME = $P{FILTRO}[code]

P.S: acho q o post seria em "frameworks,etc".

att,

No caso seria o primeiro exemplo, mas não esta dando certo pois quando eu envio o parametro ele acrescenta '' entre o WHERE NOME = FULANO ficando 'WHERE NOME = FULANO' e da erro de sintaxe SQL

P
e assim?

att,

e assim?

att,

A

vou pegar a rabetinha do que vocês estão conversando e mostrar +/- como faço e funciona:

e a query no report fica assim:

P

hehehe

então ADEMILTON eu tb faço assim, mas nosso amigo precis de todo o “where nome = ‘fulano’” seja passada via param.

att,

T

hehehe

então ADEMILTON eu tb faço assim, mas nosso amigo precis de todo o “where nome = ‘fulano’” seja passada via param.

att,
Desculpe a demora, seria isso mesmo, e quando eu passo o parametro da erro de sintaxe sql pois o comando fica dessa maneira: SELECT * FROM CLIENTES ’ WHERE NOME = FULANO '
as duas aspas aparecem entre o where e eu não sei o pq

P

será q ajuda: http://www.guj.com.br/java/98973-problema-com-ireport

att,

T

O mais engraçado é que agora o problema passou a ser outro

por exemplo:

try{
   AcessoMySql mysql = new AcessoMySql();
   HashMap parametros = new HashMap();
   parametros.put("FILTRO","WHERE receber.data_venda between '2011-05-27' and '2011-05-27'");
   JasperPrint jp  = JasperFillManager.fillReport("./relatorios/RelReceber.jasper", parametros, mysql.conectar());
   JasperViewer.viewReport(jp,false);
   }catch(Exception ex){
   ex.printStackTrace();   
   }

após enviar esses comandos ele me retorna um erro de sintaxe como a seguinte mensagem

[color=darkred]Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘WHERE receber.data_venda between ‘2011-05-27’ and ‘2011-05-27’’’ [/color]

Porquê ele adiciona duas barras \ entre as datas sendo que eu não coloquei

L

Ele tá adicionando a barra pq ele tá “escapando” os teus caracteres especiais pra uma string em java.
Cara, até pra efeito de debug e organização de código, eu te sugiro fazer isso diretamente no código java, e só então passar a coleção pro Jasper pra gerar o relatório.
Fica infinitamente mais organizado.

Agora, se querer passar um sql como parâmetro, utilize o !.. ou seja:

Esse post aqui pode esclarecer:
http://www.guj.com.br/java/238046-resolvido-parametro-opcional-no-ireport

Abraço!

T

leoramos:
Ele tá adicionando a barra pq ele tá “escapando” os teus caracteres especiais pra uma string em java.
Cara, até pra efeito de debug e organização de código, eu te sugiro fazer isso diretamente no código java, e só então passar a coleção pro Jasper pra gerar o relatório.
Fica infinitamente mais organizado.

Agora, se querer passar um sql como parâmetro, utilize o !.. ou seja:

Esse post aqui pode esclarecer:
http://www.guj.com.br/java/238046-resolvido-parametro-opcional-no-ireport

Abraço!


Consegui achar a solução no topico, obrigado a ajuda de todos ^^

Criado 2 de junho de 2011
Ultima resposta 3 de jun. de 2011
Respostas 10
Participantes 4