如何用BIRT中的另一个列结果替换为null的列结果



如果您能帮助我使用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
}

最新更新