0

JRレポートをロードするプログラムを作成しました。レポートが読み込まれるたびに値を要求されるように、レポートにパラメーターを配置しました。Javaプログラムでパラメータを渡すと正常に機能しました

Map parameters = new HashMap();
parameters.put("VoucherNo", oclsJVHeader.getJournalVoucherNo()); 
...
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);

しかし、パラメータなしでロードしようとすると、

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);

「ドキュメントにページがありません」と表示されます。コードがパラメーターを渡さないときはいつでもパラメーターにプロンプ​​トを使用させるので、ロードするとプロンプトが表示されると思っていました。

<parameter name="VoucherNo" class="java.lang.String" isForPrompting="true">

だから私の質問は、パラメータを渡さないときはいつでもレポートに値のプロンプトを表示させるにはどうすればよいですか?このためにJavaコードを変更する必要がありますか?

ところで、ここにレポートをロードするための私のコードがあります:

 FileInputStream fs = new FileInputStream(reportPath+reportFile);
 JasperDesign jasperDesign = JRXmlLoader.load(fs);
 JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
 JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,  conn); //could be null or parameters
 JFrame jframe = new JFrame("Journal Voucher");
 jframe.getContentPane().add(new JRViewer(jasperPrint));
 jframe.pack();
 jframe.setExtendedState(javax.swing.JFrame.MAXIMIZED_BOTH);
 jframe.setVisible(true);

プロジェクトにiReportNetBeansを使用しています。

4

1 に答える 1

5

AFAIK、このisForPromptingパラメーターはiReportとJasperServerでのみ使用されます(レポートを生成する他の一般的なアプリでも使用できます)。

とにかく、JasperReportはどのようにパラメーター値を尋ねるべきかを知ることになっていますか?そして、あなたのアプリケーションがウェブアプリだったら?またはコマンドラインアプリ?JasperReportsはレポートを生成します。必要なGUIを提供する必要があります。

于 2012-05-16T07:12:45.670 に答える