segun he leido por hay si se puede, pero xq mejor no realizas la consulta aparte y luego solo pintas los $F{}, en vez de q el ireport realize la consulta.
algo asi:
Asi podrias hacer tu consulta
Código:
public List RptPend(MenRecepForm alter) throws SQLException {
Conexion cn = new Conexion("DISENO");
List lista = new ArrayList();
cn.setCStQuery("Recep_RptPend");
while (cn.getNext()) {
Map m = new HashMap();
m.put("CODLOC",cn.getCol(1));
m.put("TIPAP",cn.getCol(2));
m.put("SECT",cn.getCol(3));
m.put("CANF",Integer.parseInt(cn.getCol(4)));
m.put("EST",cn.getCol(5));
lista.add(m);
}
cn.Close(1, 1, 1);
return lista;
}
y Asi generar tu reporte
Código:
List recDet = new ArrayList();
recDet=mrb.RptPrioPendiente(alter);
if (recDet.size() > 0) {
try {
Map parameters = new HashMap();
parameters.put("usuario", nomUsu);
parameters.put("TOTALFORM", String.valueOf(alter.getCant_form()));
parameters.put("COUNTL", String.valueOf(alter.getCant_lote()));
JasperPrint jasperPrint = null;
ServletContext context = this.getServlet().getServletContext();
JasperDesign jasperDesign = JRXmlLoader.load(context.getRealPath("/vista/recepcion/Report/RptPend.jrxml"));
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,new JRBeanCollectionDataSource(recDet));
JasperExportManager.exportReportToPdfFile(jasperPrint,context.getRealPath("/vista/recepcion/Report/RptPend.pdf"));
JasperExportManager.exportReportToHtmlFile(jasperPrint, context.getRealPath("/vista/recepcion/Report/RptPend.html"));
// exportar a excel
if (exp == 1) {
JRXlsExporter exporterXls = new JRXlsExporter();
String xlsFileName = "RptPend.xls";
exporterXls.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);
exporterXls.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,xlsFileName);
exporterXls.exportReport();
File f = new File(xlsFileName);
InputStream in;
ServletOutputStream out;
int bit;
response.setContentType("application/vnd.ms-excel"); // Tipo de fichero.
response.setHeader("Content-Disposition","attachment;filename=\""+ xlsFileName + "\""); // Configurar cabecera http
in = new FileInputStream(f);
out = response.getOutputStream();
bit = 256;
while ((bit) >= 0) {
bit = in.read();
out.write(bit);
}
out.flush();
out.close();
in.close();
}
}catch (JRException e) {
e.printStackTrace();
return mapping.findForward("PendientImg");
}
Con esto el ireport no tendria q hacer la consulta.
Espero te sirva
Saludos