Boa Tarde Pessoal.
Pessoal, estou com uma dúvida.
Eu gostaria de chamar um relatório .jasper em uma aplicação Java, porém eu gostaria de passar o IP, Porta e o nome do Banco de dados para ele dentro do meu código.
Por exemplo: as variaveis:
String IP = "127.0.0.1";
String Porta = "3307";
String Database = "BancoTeste";
Eu sei que dentro do iReport eu posso clicar nesse botão
e configurar.
Porém eu gostaria de passar esses dados como parametro no código Java e depois imprimir. Pois se depois o servidor for alterado, eu teria que compilar todos relatórios novamente.
Se alguém puder ajudar, agradeço muito.
Obrigadão Pessoal.
Abraços.

Podes passar por parâmetro… mas não entendo a utilidade disso.
O que queres fazer?
Isso, pode ser.
Tem como passar um exemplo por favor?
Pelo seguinte: Na aplicação web tem 200 relatórios Jasper. Ai se trocar o servidor do banco, terei que compilar novamente os 200 relatórios informando o novo IP do banco.
E se for no código Java, eu posso fazer esse código ler um arquivo, e armazenar nas variaveis: IP, Porta e Database. E em seguida passar como parametro para o Jasper.
Então se trocarem o servidor, basta trocar o IP no arquivo, e o código se encarrega de ler esse arquivo, e passa a variavel para o Jasper.
Eu chamo o jasper com o seguinte código:
String relatorio = null;
relatorio = "relatorio.jasper";
File reportFile = new File(application.getRealPath(relatorio));
Map parameters = new HashMap();
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (), parameters, Conect.getConexaoTeste());
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
Conect.fechaConexao();
Tem algum exemplo de como eu passária o IP para o Jasper?
Muito Obrigado pela ajuda.
Tentei de diversas maneiras mas não consegui.
Alguém tem algum exemplo para compartilhar?
Obrigadão.
Pessoal, muito obrigado. Funcionou corretamente.
Obrigado à todos e ao Roger que me deu um exemplo bom. Se me permitir compartilhar:
JasperReport report = (JasperReport) JRLoader.loadObject(/* arquivo de relatório aqui */);
Connection conn = DriverManager.getConnection(/* parâmetros de conexão ao banco aqui */);
Map params = new HashMap();
/* ... Preencher parâmetros ... */
JasperPrint print = JasperFillManager.fillReport(report, params, conn);
Um outro exemplo que peguei do Flaviosv foi:
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, /*este valor setará REPORT_CONNECTION -->*/dataSource.getConnection());
Então no meu caso que é para web, a linha de código ficou assim:
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (), parameters, Conect.getConexao());
Onde Conect.getConexao()
são os dados que será passado para o relatório. E se precisar alterar, basta atualizar na classe de conexão.
Muito Obrigado à todos.
Abraços.
Show de bola
Fica a sugestão de incluir a tag “[RESOLVIDO]” no título do tópico para orientar quem fizer buscas sobre o tema.
Opa, é verdade. Havia esquecido. hehe
Obrigado novamente.
Abraços.