sql >> データベース >  >> RDS >> Mysql

NetBeanGUIでのユーザー入力に従ってireportを生成する方法

    まず、作成するアプリケーションの種類を指定しなかったので、私は少し一般的な応答をしています。また、最初のレポートを作成できたかどうかについても言及していません(つまり、ユーザー入力を一切取得していません)。したがって、以下に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();
    }
    

    }

    このコードは、アプリケーションに統合する必要があります。あなたが求めているのは:

    Map parameters = new HashMap();
    

    ユーザーが挿入した入力をこのマップに配置するだけです。たとえば、JSFページがある場合は、そのUIコンポーネントの値を取得して、このマップに保存できます

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

    上記のコードで、このマップがレポートに渡されていることがわかります。

    JasperFillManager.fillReport(jasperReport, parameters, ds);
    

    残っているのは、iReportでレポートクエリを編集することだけです。最初に、マップに挿入されたものとまったく同じ名前のパラメーターを作成します(この例では「type_code」。大文字と小文字が区別されます)。次に、このパラメーターに基づいてタイプ列をフィルター処理するWHERE句を使用する必要があります。以下を参照してください。 そして、ここにいくつかのチュートリアルがあります: 1 および 2

    これらがお役に立てば幸いです!




    1. MySQLで1つのアトミック操作で2つのテーブルの名前を変更する方法

    2. Asinh()がPostgreSQLでどのように機能するか

    3. SQLServerでセッションのANSI_NULLS設定を確認する方法

    4. MySQLとJSON-なぜですか?