Allereerst heb je niet het soort applicatie gespecificeerd dat je wilt maken, dus ik ben een beetje algemeen over mijn antwoord. Je hebt ook niet vermeld of het je al is gelukt om je eerste rapport te maken (ik bedoel, zonder enige gebruikersinvoer). Dus hieronder laat ik het benodigde onderdeel zien voor het genereren van een 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();
}
}
Deze code moet in uw applicatie worden geïntegreerd. Het onderdeel waar je om vraagt is:
Map parameters = new HashMap();
U hoeft alleen de invoer die door de gebruiker is ingevoegd in deze kaart te plaatsen. Als u bijvoorbeeld een JSF-pagina heeft, kunt u de waarde van de UI-component nemen en op deze kaart opslaan
parameters.put("type_code", getTypeCodeUIComponent().getValue());
U ziet in de bovenstaande code dat deze kaart is doorgegeven aan het rapport:
JasperFillManager.fillReport(jasperReport, parameters, ds);
Het enige dat overblijft is om uw rapportquery te bewerken, in iReport. Eerst maakt u een parameter met exact dezelfde naam als die in de kaart is ingevoegd (in dit voorbeeld "type_code". Let op, deze is hoofdlettergevoelig). Ten tweede moet u een WHERE-component gebruiken waarin u de typekolom filtert op basis van deze parameter, zie hieronder:En hier heb je wat tutorials:1 en 2
Ik hoop dat dit helpt!