sql >> Databáze >  >> RDS >> Mysql

Jak vygenerovat ireport podle uživatelského vstupu v netbean gui

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!




  1. Pomalý výkon v dotazu propojeného serveru

  2. MySQL - Nejrychlejší způsob, jak zkontrolovat, zda se data v tabulce InnoDB změnila

  3. Poddotaz Oracle nevidí proměnnou z vnějšího bloku o 2 úrovně výše

  4. Řetězce vlastního formátu data a času Podporováno FORMAT() na serveru SQL Server