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);
プロジェクトにiReportとNetBeansを使用しています。