如果您能帮助我使用Birt中的表达式创建计算列,我将非常感激。
我有两列给出结果,一列给出电子邮件地址,一列给出联系电话:电话,手机…
当电子邮件结果为null时,则联系人号码列显示一个数字,这些是sql表中单独的通信方法。
我想做的是为电子邮件地址和电话号码创建一个新的计算列,当emailaddress为空时,则替换为contactnumber = contact,当contactnumber为空时,替换为emailaddress。
我在网上看了一些类似的问题,发现当您单击验证时,可以将以下脚本输入到birt表达式构建器中,但它没有在我使用的erp软件中加载报告。
表达式本身正确吗?
if(row["destination"] == null){
row["contact"];
}
else if(row["contactnumber"] == null){
row["contact"];
}
else{
return true;
}
亲切的问候,斯图尔特
不,这是不正确的(尽管在语法上是有效的)。
首先,我们这里得到的是一个表达式,而不是一个函数。所以不应该有return
语句
显然true
不可能是正确的。其他值(可能)是字符串,所以这个也应该是字符串。
我不太清楚你到底想要达到什么目的。也许你正在寻找像COALESCE在SQL或NVL在Oracle SQL?我假设你创建了一个JS函数,用JSfiddle测试它,然后把它放在初始化脚本中,并在表达式中调用它。
通过在Birt表达式中使用以下代码,如果为空,则用另一列的值替换一列。
if(row["destination"] == null){
row["contactnumber"];
}
else {
row["destination"]; }
你可以试试这个奇怪的结构
if (!row["doc_no"] === false){
//if value is not nullNaNempty
}