将参数从另一个数据集传递给脚本化数据源

时间:2013-08-08 10:47:06

标签: javascript birt params

如何将参数从数据集行值传递到通过脚本化数据源访问的java函数?

我有一个解密加密字符串的java类

class Decryptor{
public String decrypt(text)
{
.
.
StandardPBEStringEncryptor textEncryptor = new StandardPBEStringEncryptor();
return textEncryptor.decrypt(text);
}
}

我将它导入到我的birt报告中,如下所示: 我创建了一个名为dsCode的数据集,其列为“code”;

open:
sessionUtil = new  Packages.com.reports.server.generator.data.SessionUtil();
sessionUtil.openCurrentSession();
c = new Decryptor();
textDecrpt = c.decrypt("O6pas1t9NyY9bmAtjvX2NA==");

fetch;
row["code"] = textDecrpt ;
return true;

这很好用。但是我想从anther数据集行值(dsCustomerIfdo的encryptedCodecolumn)将值传递给decrypt函数。我该怎么做呢?我将dsCode作为子报表的数据源,并将名为pmCode的参数添加到dsCode,并使用“数据集参数绑定”将值传递给它 并制作了像这样的剧本

textDecrpt = c.decrypt(params["pmCode"]);

这给了我一个错误的文件结束未定义。 如何在javascript中访问数据集行值?或者将数据集的rowvalue传递给脚本函数?

这不起作用

  var dset = reportContext.getDesignHandle().findDataSet("dsCustomerInfo");
   textDecrpt = c.decrypt(dset.getRow("encryptedCode").value);

感谢

1 个答案:

答案 0 :(得分:0)

我通过不使用其他数据集来解决它,就像我最初尝试的那样。刚刚使用了dsCusotmerInfo,添加了一个名为decryptedCode的计算列,并在fetch上添加了scirpt。这会解密所有客户的所有代码。

sessionUtil = new  Packages.com.reports.server.generator.data.SessionUtil();
sessionUtil.openCurrentSession();
c = new Decryptor();
row["decryptedCode"] = c.decrypt(row["encryptedCode"]);
return true;