Ya explicado todo creo que viene lo mas importante, pasar los parámetros al reporte para que este imprima valores según preguntas que se le hagan al usuario, como debe ser en los reportes, para ello seguimos las líneas de la Parte II del tutorial y ubicados en el inspector hacemos click en "Parameters" y agregamos uno nuevo (Add Parameter), le colocamos el nombre que queramos y modificamos nuestra consulta SQL colocando al final la condición WHERE.
El String "MiValor" agrega al método la cadena para mappearla al parámetro del reporte, con "parametro.put('nombre_del_parametro',MiValor)" es que agregamos este valor, para agregar mas parametro simplemente agregamos mas líneas y mas variables al método, por ejemplo.
SELECT campos FROM mitabla WHERE campo = $P{MiParametro}Y una vez establecido el SQL cambiamos el código anterior con una pequeña variante, haremos un retorno de String para saber el valor del parámetro indicado, el código sería el siguiente.
package reportes; import java.sql.*; import java.util.HashMap; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; import net.sf.jasperreports.engine.*; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.view.*; import net.sf.jasperreports.view.save.JRPdfSaveContributor.*; import net.sf.jasperreports.view.JRViewer.*; import net.sf.jasperreports.view.save.JRMultipleSheetsXlsSaveContributor.*; /** * * @author Carlos Martinez */ public class IniciarReporte { Connection conn; public IniciarReporte(){ try { Class.forName("org.gjt.mm.mysql.Driver"); conn = DriverManager.getConnection(URL_MYSQL,USUARIO_MYSQL,CLAVE_MYSQL); } catch (SQLException ex) { Logger.getLogger(IniciarReporte.class.getName()).log(Level.SEVERE, null, ex); } catch (ClassNotFoundException ex) { Logger.getLogger(IniciarReporte.class.getName()).log(Level.SEVERE, null, ex); } } public void MiConsultaN(String MiValor){ try{ String archivo = System.getProperty ("user.dir")+"\src\reportes\MiReporte.jasper"; System.out.println("Cargando desde: " + archivo); if(archivo == null){ JOptionPane.showMessageDialog(null,"Error al generar reporte, verifique impresoran", "Generar Reporte",JOptionPane.ERROR_MESSAGE); } JasperReport masterReport= null; try { masterReport= (JasperReport) JRLoader.loadObject(archivo); } catch (JRException e) { System.out.println("Error cargando el reporte maestro: " + e.getMessage()); JOptionPane.showMessageDialog(null,"Error al generar reporte, verifique impresoran","Generar Reporte",JOptionPane.ERROR_MESSAGE); } Map parametro= new HashMap(); parametro.put("nombre_del_parametro",MiValor); JasperPrint jasperPrint= JasperFillManager.fillReport(masterReport,parametro,conn); JasperViewer jviewer= new JasperViewer(jasperPrint,false); jviewer.setTitle("Titulo de mi Reporte"); jviewer.setVisible(true); }catch (Exception j){ System.out.println("Mensaje de Error:"+j.getMessage()); } } }Y al igual que antes lo podemos llamar de la siguiente forma:
IniciarReporte jasper = new IniciarReporte(); jasper.MiConsultaN("MiValorString");Claro, para obtener este valor podemos utilizar un JTextField, un dialogo o cualquier otra cosa que se nos ocurra, ya lo demas queda a nuestra creatividad e imaginación.
El String "MiValor" agrega al método la cadena para mappearla al parámetro del reporte, con "parametro.put('nombre_del_parametro',MiValor)" es que agregamos este valor, para agregar mas parametro simplemente agregamos mas líneas y mas variables al método, por ejemplo.
public void MiConsultaN(String Valor1,String Valor2,String Valor3){ //...Resto del código parametro.put("parametro1",Valor1); parametro.put("parametro2",Valor2); parametro.put("parametro3",Valor3); //...Resto del códigoCon esto ya estamos listos para generar los reportes. Ya hasta aquí llega este tutorial de como generar reportes en java... suerte!!
Recibe notificaciones por correo