0

アイテムを適切に表示するレポートがあります。次に、メインレポートに3つのサブレポートを追加する必要があります。

このために私はiReportsを使用しました。

私の質問は、アイテムのリストをサブレポートに渡すにはどうすればよいですか? いくつかのチュートリアルを見つけましたが、その場合、サブレポートのデータは最初のレポートの中にあります。

私の場合、4つの詳細バンドを含むレポートがあり、そのうち3つはサブレポートを含みます。

私のコード:

JRBeanCollectionDataSource beanCollection = new JRBeanCollectionDataSource(report.getList());
        jasperPrint = JasperFillManager.fillReport("C:\\Users\\Desktop\\Report.jasper", new HashMap(), beanCollection) ;
HttpServletResponse http = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
        http.addHeader("Content-disposition", "attachment; filename=report.pdf");
        ServletOutputStream stream = http.getOutputStream();
        JasperExportManager.exportReportToPdfStream(jasperPrint, stream);

私はjsf2.0を使用しています。

ps:4つのjasperPrintを作成し、各ページをメインレポートに追加できることを確認しましたが、それが可能かどうかを知りたいのですが。

よろしく。

4

3 に答える 3

0

私がついにやったこと:

for(JRPrintPage p : jasperPrint1.getPages()){

     jasperPrint.addPage(p);
}

ここで、jasperPrintはメインレポートであり、jasperPrint1はサブレポート(つまり、それ自体のレポート)です。このようにして、アイテムのリストをすべてのレポートに通常どおり渡すことができます。

 JRBeanCollectionDataSource beanCollection1 = new JRBeanCollectionDataSource(report.getSections().get(1).getRowsReports());
        JasperPrint jasperPrint1 = JasperFillManager.fillReport("C:\\Users\\Desktop\\Meeting.jasper", new HashMap(), beanCollection1) ;
于 2013-02-18T17:41:52.443 に答える
0

データソースに次の構造があるとします

public class MyPOJO{
    private List<POJOSubData1> sub1;
    private List<POJOSubData2> sub2;
    private List<POJOSubData3> sub3;

    //getters & setters
    ... 
}

サブレポートのプロパティに以下を指定することで、目的のデータソースをサブレポートに渡すことができます。

Connection type : Use a datasource expression
Data Source Expression : $F{sub1} //or sub2 or sub3

Field Classは であるsub1必要がありますList

また、1 つのサブレポートを 1 つの詳細バンドに分離する必要はありません。すべてのサブレポートを 1 つの詳細バンドに配置できます。

于 2013-02-18T02:20:50.427 に答える
0

Ireport を使用してレポートを作成し、Ireport でメイン レポートを開き、サブレポートを選択してレポートのプロパティ セクションに移動し、[パラメータ] プロパティをクリックして [マスターからコピー] タブをクリックすると、そこからパラメータを選択できます。あなたは太陽のレポートに渡したいです。

于 2013-02-18T06:37:05.873 に答える