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
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
tioola
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
pedruhenrik
e assim?
att,
e assim?
att,
A
ADEMILTON
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
pedruhenrik
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
tioola
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
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
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:
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: