Za prvé jste nespecifikovali druh aplikace, kterou chcete vytvořit, takže jsem ve své odpovědi trochu obecný. Také jste se nezmínili o tom, zda se vám již podařilo vytvořit svůj první přehled (tedy bez jakéhokoli zásahu uživatele). Níže tedy ukazuji potřebnou část pro generování 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();
}
}
Tento kód by měl být integrován do vaší aplikace. Část, kterou požadujete, je:
Map parameters = new HashMap();
Do této mapy stačí vložit vstup vložený uživatelem. Například, pokud máte stránku JSF, můžete vzít hodnotu její komponenty uživatelského rozhraní a uložit ji do této mapy
parameters.put("type_code", getTypeCodeUIComponent().getValue());
Na výše uvedeném kódu uvidíte, že tato mapa je předána do sestavy:
JasperFillManager.fillReport(jasperReport, parameters, ds);
Jediné, co zbývá, je upravit dotaz na sestavu v iReportu. Nejprve vytvoříte parametr s přesně stejným názvem, jaký je vložen do mapy (v tomto příkladu „type_code“. Všimněte si, že se rozlišují malá a velká písmena). Za druhé, měli byste použít klauzuli WHERE, kde filtrujete sloupec typu na základě tohoto parametru, viz níže:A tady máte pár návodů:1 a 2
Doufám, že to pomůže!