Først og fremmest har du ikke angivet, hvilken type applikation du vil oprette, så jeg er lidt generel i mit svar. Du nævnte heller ikke, om du allerede har formået at opbygge din første rapport (jeg mener, uden at tage noget brugerinput). Så nedenfor viser jeg den nødvendige del til at generere en 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();
}
}
Denne kode skal integreres i din applikation. Den del du beder om er:
Map parameters = new HashMap();
Du skal blot indsætte det input, brugeren har indsat i dette kort. Eksempel, hvis du har en JSF-side, kan du tage værdien af dens UI-komponent og gemme på dette kort
parameters.put("type_code", getTypeCodeUIComponent().getValue());
Du kan se på koden ovenfor, at dette kort overføres til rapporten:
JasperFillManager.fillReport(jasperReport, parameters, ds);
Det eneste, der er tilbage, er at redigere din rapportforespørgsel i iReport. Først opretter du en parameter med nøjagtig samme navn som den, der er indsat i kortet (i dette eksempel "type_code". Bemærk, der skelnes mellem store og små bogstaver). For det andet bør du bruge en WHERE-sætning, hvor du filtrerer typekolonnen baseret på denne parameter, se nedenfor:Og her er nogle tutorials:1 og 2
Håber disse hjælper!