Mysql
 sql >> Database >  >> RDS >> Mysql

Come generare un ireport in base all'input dell'utente in netbean gui

Prima di tutto non hai specificato il tipo di applicazione che vuoi creare, quindi sono un po' generico sulla mia risposta. Inoltre non hai menzionato se sei già riuscito a creare il tuo primo rapporto (voglio dire, senza prendere alcun input dall'utente). Quindi, di seguito mostro la parte necessaria per generare un JasperReport:

public void generateReport(ActionEvent actionEvent) throws FileNotFoundException {

JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(PopulateBean.createBeanCollection());
Map parameters = new HashMap();
 
try {
    InputStream is = new FileInputStream(new File("Source path to template.jrxml"));
    OutputStream os=new FileOutputStream(new File("Resulting report.pdf"));
     
    JasperDesign jasperDesign = JRXmlLoader.load(is);
    JasperReport jasperReport =
        JasperCompileManager.compileReport(jasperDesign);

    JasperPrint jasperPrint =
        JasperFillManager.fillReport(jasperReport, parameters, ds);

    JasperExportManager.exportReportToPdfStream(jasperPrint, os);
} catch (JRException e) {
      e.printStackTrace();
}

}

Questo codice dovrebbe essere integrato nella tua applicazione. La parte che stai chiedendo è:

Map parameters = new HashMap();

Devi solo inserire l'input inserito dall'utente in questa mappa. Ad esempio, se hai una pagina JSF, puoi prendere il valore del suo componente UI e memorizzarlo in questa mappa

parameters.put("type_code", getTypeCodeUIComponent().getValue());

Vedrai nel codice sopra che questa mappa è passata al rapporto:

JasperFillManager.fillReport(jasperReport, parameters, ds);

L'unica cosa che resta da fare è modificare la query del rapporto, in iReport. Per prima cosa crei un parametro con lo stesso nome di quello inserito nella mappa (in questo esempio "type_code". Nota, fa distinzione tra maiuscole e minuscole). In secondo luogo, dovresti utilizzare una clausola WHERE in cui filtri la colonna del tipo in base a questo parametro, vedi sotto:Ed ecco alcuni tutorial:1 e 2

Spero che questi aiutino!