0

我非常感谢使用 Birt 中的表达式计算列的一些帮助。

我有两列给出结果,一列给出电子邮件地址,一列给出联系电话:电话,手机..

当电子邮件结果为空时,联系号码列显示一个数字,这些是与 sql 中的表不同的通信方法。

我想做的是为电子邮件地址和电话号码创建一个新的计算列,当电子邮件地址为空时替换为联系号码=联系人,当联系号码为空时替换为电子邮件地址。

我在网上查看了一些类似的问题,发现当您单击验证时,将以下脚本输入到 birt 表达式生成器中是可以接受的,但是它没有在我正在使用的 erp 软件中加载报告。

表达本身是否正确?

if(row["destination"] == null){
row["contact"];
}
else if(row["contactnumber"] == null){
row["contact"];
}
else{
return true;
}

亲切的问候,

斯图尔特

4

2 回答 2

0

不,这是不正确的(尽管在语法上是有效的)。

首先,我们在这里得到的是一个表达式,而不是一个函数。所以不应该有return说法。

显然true不可能是对的。其他值(可能)是字符串,所以这也应该是一个字符串。

我不太确定你真正想要实现什么。也许您正在寻找类似 SQL 中的 COALESCE 或 Oracle SQL 中的 NVL 之类的东西?

我想你创建一个 JS 函数,用 JSfiddle 左右测试它,然后将它放在初始化脚本中并在表达式中调用它。

于 2021-09-20T06:58:16.093 回答
0

通过使用以下 Javascript 作为 Birt 中的计算列,如果为 null,则将一列替换为另一列值。

if(row["destination"] == null){
row["contactnumber"];
} 
else { 
row["destination"]; }
于 2021-09-23T09:32:24.520 回答