1

我想通过将参数传递给报告来按需创建数据集,这些参数是应该查询的文件的名称,以便在报告中获得正确的列和数据,我在想像编辑 this.queryText 属性在哪里“this”表示当时尚未创建的数据集。

有可能吗?如果有,怎么做?

非常感谢。

4

1 回答 1

1

您始终可以使用脚本数据集事件适配器来描述它。唯一的问题是报告的内容不会知道这些名称。您将需要编写更多代码来处理这种情况。如果您创建一个空白报表并添加一个脚本数据源和一个没有列的脚本数据集,您可以将事件处理程序设置为类似于以下内容的类:

package my.event.handlers;

import org.eclipse.birt.report.engine.api.script.IScriptedDataSetMetaData;
import org.eclipse.birt.report.engine.api.script.IUpdatableDataSetRow;
import org.eclipse.birt.report.engine.api.script.eventadapter.ScriptedDataSetEventAdapter;
import org.eclipse.birt.report.engine.api.script.instance.IDataSetInstance;

public class MyScriptedDataSetMeta extends ScriptedDataSetEventAdapter {

private Integer cnt=0;
private Integer cntT=3;

@Override
public boolean fetch(IDataSetInstance dataSet, IUpdatableDataSetRow row) {

    if( cnt < cntT){
        try{
            row.setColumnValue("col1", cnt);
            row.setColumnValue("col2", "hello");
            row.setColumnValue("A_Column", "jjj");

            cnt++;
            return true;
        }catch (Exception e){

        }
    }
    return false;
}

@Override
public boolean describe(IDataSetInstance dataSet,
        IScriptedDataSetMetaData metaData) {
    // TODO Auto-generated method stub
    metaData.addColumn("col1", Integer.class);
    metaData.addColumn("col2", String.class);
    metaData.addColumn("A_Column", String.class);

    return true;
}

}
于 2012-10-09T23:29:44.170 回答