首页 > 解决方案 > 如何在 BIRT 中打印之前将前缀与动态文本分开

问题描述

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

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

现在的问题是,这个名字带有前缀 Mr、Ms 等与一些报告中的名字连接,这会影响名字解密,我只想要这个名字来解密。在查询中分离前缀和名称会干扰绑定并导致其他一些错误。所以我想要做的是检查任何空格或拆分的名称,以便我可以在第一个空格之后识别任何即将出现的名称和空格之前的前缀。然后我想将该名称单独发送到该decypt方法,并在返回解密名称时应使用某些脚本与前缀连接并在动态文本字段中打印。如何在 BIRT Report Designer 版本中实现这一点:3.7.1.v2

标签: eclipsebirt

解决方案


DataSet将名称属性拖放到报告中的某处并使其不可见。转到onRenderBIRT 中脚本选项卡中可用的该名称属性,然后粘贴以下代码以将前缀与名称分开,并将名称单独发送到您的方法。

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;

推荐阅读