Först och främst angav du inte vilken typ av applikation du vill skapa, så jag är lite allmän i mitt svar. Du nämnde inte heller om du redan har lyckats bygga din första rapport (jag menar, utan att ta någon input från användaren). Så nedan visar jag den del som behövs för att generera 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();
}
}
Denna kod bör integreras i din applikation. Den del du efterfrågar är:
Map parameters = new HashMap();
Du behöver bara lägga in input som infogats av användaren i denna karta. Exempel, om du har en JSF-sida kan du ta värdet av dess UI-komponent och lagra i den här kartan
parameters.put("type_code", getTypeCodeUIComponent().getValue());
Du ser på koden ovan att den här kartan skickas till rapporten:
JasperFillManager.fillReport(jasperReport, parameters, ds);
Det enda som återstår är att redigera din rapportfråga, i iReport. Först skapar du en parameter med exakt samma namn som den som infogats i kartan (i det här exemplet "typ_kod". Observera att den är skiftlägeskänslig). För det andra bör du använda en WHERE-sats där du filtrerar typkolumnen baserat på denna parameter, se nedan:Och här kommer några tutorials:1 och 2
Hoppas dessa hjälper!