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!