Birt参数

时间:2015-11-03 12:27:44

标签: java birt

我使用以下代码创建了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。我怎么能得到它?

2 个答案:

答案 0 :(得分:2)

从外部,您将参数传递给报告,而不是传递给数据集。 您必须区分报告参数和数据集参数。 在报表内部,数据集参数可以从报表参数中获取其值,但这不是自动的。数据集参数也可以从布局上下文中获取其值(请参阅属性中的数据集参数绑定按钮)。

有关详细信息,请参阅BIRT文档。

如果您来自其他报表设计工具,您可能会发现这很麻烦且过于复杂,但事实上它是一个很棒的功能,因为这允许在报表中多次重复使用相同的数据集,并且是重用组件的基础。从库中引用它们。

答案 1 :(得分:1)

您需要在报告设计中定义参数。

Creation of the parameter called masterbomid in your case it would be named as foo.

Assignment into a dataset used for the report it will take the value you send on the task.setParameterValue("foo", "bar");