Olá pessoal,
estou com problemas para pegar os parâmetros no iReport. Eu sei que consigo chegar até eles, pois já testei a visualização… mas qndo chamo o relatório ele imprime as informações como se eu tivesse passado o String[] todo com 0 parâmetros… vou colocar o código de como estou pegando as informações:
[code]package estudo;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.design.JRJdtCompiler;
import net.sf.jasperreports.engine.design.JasperDesign;
public class geraRelatorio extends HttpServlet{
private static Connection getConnection( ) throws ClassNotFoundException, SQLException{
//faço a conexão com o banco.
}
public void doPost (HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String[] vlParametro = request.getParameterValues("clientes");
// obtém a conexão com o banco de dados
Connection con = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
con = getConnection();
} catch (Exception e) {
System.out.println("Erro ao obter conexao via DriverManager: " + e.getMessage());
}
// gera o relatório
ServletContext context = getServletContext();
byte[] bytes = null;
try {
// carrega os arquivos jasper
// JasperReport compiledReport = (JasperReport)JRLoader.loadObject(
// context.getRealPath("\web\relatorioNomeAlunos.jasper"));
java.io.File jrxmlFile = new java.io.File("F:\Documents and Settings\Samara\Meus documentos\CódigoNTI\TestePRPG\web\TesteOra.jrxml");
JasperDesign design = net.sf.jasperreports.engine.xml.JRXmlLoader.load(jrxmlFile);
JRJdtCompiler comp = new JRJdtCompiler();
JasperReport compiledReport = comp.compileReport(design);
// parâmetros, se houverem
Map parametros = new HashMap();
for(int i=0; i < vlParametro.length; i++){
parametros.put("nr_op", vlParametro[i]);
}
// direciona a saÃda do relatório para um stream
bytes = JasperRunManager.runReportToPdf(compiledReport,parametros,con);
} catch (JRException e) {
e.printStackTrace();
}
if (bytes != null && bytes.length > 0) {
// envia o relatório em formato PDF para o browser
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
}
}
[/code]
E minha query no iReport tah assim:
[code]SELECT DISTINCT
A.“ALU_MATRICULA”,
P.“PES_NOME”,
P.“PES_DT_NASCIMENTO”,
O.“OSA_DESCRICAO”
FROM
“PRPG”.“ALUNOS” A,
“PRPG”.“PESSOAS” P,
“PRPG”.“OBSERVACOES_SITUACOES_ALUNOS” O
WHERE
A.ALU_PES_COD_PESSOA = P.PES_COD_PESSOA
AND A.ALU_OBS_SITUACAO_ALUNO = O.OSA_COD_OBSERVACAO
AND A.ALU_ECU_NIV_PRG_COD_PROGRAMA = $P{programa}
AND A.ALU_OBS_SITUACAO_ALUNO = $P{situacao}
ORDER BY
P.PES_NOME ASC[/code]
Será que alguém pode me ajudar? Ah… esses parametros no banco estão declarados como number.