我使用以下代码创建了BIRT 4.3.0报告。重点是:我想将参数foo
传递给dataSet:
public File actionPdf() throws EngineException {
IReportEngine engine = getEngine();
// Open the report design
IReportRunnable design = null;
design = engine.openReportDesign("c:\\hello_world.rptdesign");
IRunAndRenderTask task = engine.createRunAndRenderTask(design);
task.setParameterValue("foo", "bar");
task.validateParameters();
PDFRenderOption PDF_OPTIONS = new PDFRenderOption();
File f = new File("xyz.pdf");
PDF_OPTIONS.setOutputFileName(f.getAbsolutePath());
PDF_OPTIONS.setOutputFormat("pdf");
task.setRenderOption(PDF_OPTIONS);
task.run();
task.close();
return f;
}
,dataSet如下所示:
public class ActionsPerDateDataSet implements IPojoDataSet {
public void open(Object obj, Map<String,Object> map) {
System.out.println( obj + " map: " + map + " size: " + map.size())
}
2015-11-03T13:23:18.993+0100|Information {org.eclipse.datatools.connectivity.oda.util_consumerResourceIds=org.eclipse.datatools.connectivity.oda.util.ResourceIdentifiers@24a1f3df, org.eclipse.birt.data.engine.expression.compareHints=org.eclipse.birt.data.engine.expression.CompareHints@99fdef1, OdaConsumerId=org.eclipse.datatools.connectivity.oda.profile.connectionPropertyService, PDF_RENDER_CONTEXT=org.eclipse.birt.report.engine.api.PDFRenderContext@491c843} map: {} size: 0
但是没有设置参数foo
。我怎么能得到它?
答案 0 :(得分:2)
从外部,您将参数传递给报告,而不是传递给数据集。 您必须区分报告参数和数据集参数。 在报表内部,数据集参数可以从报表参数中获取其值,但这不是自动的。数据集参数也可以从布局上下文中获取其值(请参阅属性中的数据集参数绑定按钮)。
有关详细信息,请参阅BIRT文档。
如果您来自其他报表设计工具,您可能会发现这很麻烦且过于复杂,但事实上它是一个很棒的功能,因为这允许在报表中多次重复使用相同的数据集,并且是重用组件的基础。从库中引用它们。
答案 1 :(得分:1)
您需要在报告设计中定义参数。