如何逐个获取参数的多个值的数据

时间:2014-04-11 06:51:44

标签: birt

我有一个参数的多个值我想为Birt报告中的每个参数值获取每个查询的数据。我只获取一个参数值而不是全部的数据。 m使用脚本数据源。打开并获取方法。谢谢

在DataSet中打开

 importPackage(Packages.com.abc.test.events);

var TlantNo = params["tlant"].value;
var reqNo = params["Number"].value;

poreEvents = new StdPoreReqEvents();
poreEvents.setReqNo(reqNo);
poreEvents.setTlantNo(TlantNo);
poreEvents.open();

var poreRO = poreEvents.fetch();
if (poreRO == null) {
    return false;
} else
    {

        row["REQ_NO"] = poreRO.getReqNo();
        row["REQ_DATE"] = poreRO.getReqDate();

        return true;
    }

2 个答案:

答案 0 :(得分:2)

具有多个值的报表参数是一个数组,我们必须通过脚本数据集对其进行迭代。

在数据集的 open 事件中,我们只需要初始化全局索引:

i=0;

fetch 事件中,使用下面的脚本处理每次迭代。特别注意我们如何获得reqNo的价值:

importPackage(Packages.com.abc.test.events);

if (params["Number"].value!=null && i<params["Number"].value.length){
    var TlantNo = params["tlant"].value;
    var reqNo = params["Number"].value[i];   

    //ETC. do here your stuff with porevents, declare poreRO, check if result is null

    row["REQ_NO"] = poreRO.getReqNo();
    row["REQ_DATE"] = poreRO.getReqDate();
    i++;  //Important: increment this even if poreRO is null, otherwise infinite loop
    return true; //should return true even if poreRO was null, to process next rows
}else{
  return false;
}

答案 1 :(得分:1)

另一种方法是通过定义一个具有输出列的数据集,该输出列是多值参数Fetch,该列通过IN查询多值参数然后将该值表示(输出列值)传递给其他数据集作为输入/输出参数并给出参数绑定。 它解决了我的问题:)