Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment générer un ireport en fonction de l'entrée de l'utilisateur dans netbean gui

Tout d'abord, vous n'avez pas spécifié le type d'application que vous souhaitez créer, je suis donc un peu général sur ma réponse. De plus, vous n'avez pas mentionné si vous avez déjà réussi à créer votre premier rapport (c'est-à-dire sans prendre aucune intervention de l'utilisateur). Donc, ci-dessous, je montre la partie nécessaire pour générer un 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();
}

}

Ce code doit être intégré à votre application. La pièce que vous demandez est :

Map parameters = new HashMap();

Il vous suffit de mettre l'entrée insérée par l'utilisateur dans cette carte. Exemple, si vous avez une page JSF, vous pouvez prendre la valeur de son composant d'interface utilisateur et la stocker dans cette carte

parameters.put("type_code", getTypeCodeUIComponent().getValue());

Vous verrez sur le code ci-dessus que cette carte est transmise au rapport :

JasperFillManager.fillReport(jasperReport, parameters, ds);

La seule chose qui reste est de modifier votre requête de rapport, dans iReport. Vous créez d'abord un paramètre portant exactement le même nom que celui inséré dans la carte (dans cet exemple "type_code". Notez qu'il est sensible à la casse). Deuxièmement, vous devez utiliser une clause WHERE dans laquelle vous filtrez la colonne de type en fonction de ce paramètre, voir ci-dessous :Et voilà quelques tutoriels :1 et 2

J'espère que cela vous aidera !