在BIRT中打印之前如何从动态文本中分离前缀

时间:2018-11-17 05:11:37

标签: eclipse birt

我要在报告中以动态文本形式打印的名称在数据库中采用加密格式。我在此动态文本字段的onCreate中借助以下脚本来解密该名称。

this.text=Packages.com.erp.util.EncryptUtil.decrypt(name);

现在的问题是,此名称带有前缀Mr,Ms等,在某些报告中还与名称串联在一起,这影响了名称解密,我希望单独使用该名称进行解密。在查询中分隔前缀和名称会干扰绑定,并导致其他一些错误。因此,我要检查的是任何空格的名称或拆分的名称,以便我可以在第一个空格之后识别出即将出现的名称以及在空格之前是前缀的名称。然后,我想将该名称单独发送到decypt方法,并且在返回解密的名称时,应使用一些脚本将其与前缀连接,并在动态文本字段中进行打印。如何在BIRT报告设计器版本:3.7.1.v2

中实现此目标

1 个答案:

答案 0 :(得分:0)

DataSet中将name属性拖放到报表中的某个位置,使其不可见。转到该名称属性的onRender,该属性可从BIRT的脚本选项卡中获得,然后粘贴以下代码以将前缀与名称分开,然后将名称单独发送给您的方法。

name = this.getValue();
var sArr  = name.split(" ");
name="";
for(var i=1;i<sArr.length;i++){
if(sArr[i]!=null)
name = name+" "+sArr[i];
}
name = name.replace(/^[ ]+|[ ]+$/g,'')
name=sArr[0]+" "+Packages.com.yourpackagename.yourmethodname(name);

现在将动态文本从调板拖放到要查看名称的位置。转到脚本标签中可用的动态文本字段的onCreate,然后粘贴以下代码以打印从方法返回的结果以及前缀。

this.text=name;