sql >> Database >  >> RDS >> Mysql

Hoe een rapport te genereren op basis van gebruikersinvoer in netbean gui

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!




  1. latin-1 naar utf-8 database

  2. Wat is de beste manier om een ​​naar zichzelf verwijzende MySQL-tabel leeg te maken?

  3. Geheugenlimieten in SQL Server 2016 SP1

  4. Hoe een filtersysteem in SQL implementeren?