
Esto tiende a ser un poco molesto ya que tendremos 2 archivos por cada reporte y la verdad no es nada cómodo el entrar a la carpeta de reportes cuando se tienen mas de 200. Entonces la solución es utilizar el xml del reporte directamente.
No explicare mucho ya que todo esta explicado en las siguientes entradas:
Entonces nuestro código sería el siguiente:
String archivo = "Mi_Reporte.jrxml"; JasperReport masterReport= JasperCompileManager.compileReport(archivo); JasperPrint jasperPrint= JasperFillManager.fillReport(masterReport,parametros,conexionSQL); JasperViewer jviewer= new JasperViewer(jasperPrint,false);
Explicando cada cosa tenemos que:
- archivo: variable de la ruta donde se ubica el archivo "jrxml".
- masterReport: utilizamos el compilador interno para que el mismo método se encargue de compilar y generar la vista, en vez de cargar la hecha como lo hacíamos antes.
- jasperPrint: con esto enviamos por pantalla el resultado de la compilación, utilizando el reporte maestro, los parámetros y los datos de la conexión con la base de datos SQL, en caso de no usar nada de eso simplemente colocamos null en cada opción (por decirlo así).
- jViewer: mostramos finalmente el reporte en vez de imprimirlo directamente, esto ayuda al usuario en caso de querer guardarlo y no gastar papel (ayudemos al planeta de vez en cuando, vale!?).
Entonces sabiendo todo esto, nuestra clase queda de la siguiente manera:
package reporte; import java.util.HashMap; import java.util.Map; import javax.swing.JOptionPane; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.view.JasperViewer; public class IniciarReporte { public void Imprimir(){ try{ String archivo = "Mi_Reporte.jrxml"; if(archivo == null){ JOptionPane.showMessageDialog(null,"Error al cargar reporte", "Generar Reporte",JOptionPane.ERROR_MESSAGE); } JasperReport masterReport= null; try { masterReport= JasperCompileManager.compileReport(archivo); } catch (JRException e) { JOptionPane.showMessageDialog(null,"Error al compilar reporte", "Generar Reporte",JOptionPane.ERROR_MESSAGE); } Map parametros= new HashMap(); parametros.put("parametro1", valorparametro1); JasperPrint jasperPrint= JasperFillManager.fillReport(masterReport,parametros,conexionSQL); JasperViewer jviewer= new JasperViewer(jasperPrint,false); jviewer.setVisible(true); }catch (Exception ex){ JOptionPane.showMessageDialog(null,"Un mensaje de error que puedes personalizar si quieres", "Generar Reporte",JOptionPane.ERROR_MESSAGE); } } }
Recibe notificaciones por correo