我想通过将参数传递给报告来按需创建数据集,这些参数是应该查询的文件的名称,以便在报告中获得正确的列和数据,我想要编辑这个。 queryText属性,其中“this”表示尚未创建的数据集。
是否可能,如果可能,怎么样?
非常感谢。
答案 0 :(得分: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;
}
}