Sau*_*hal 6 java mysql format birt report
我有一张桌子,它给出了Nos.和Decimal(重量 - kg)Eg10.455 Kg(即10 Kg和455 gms)和nos的值.如10号
现在所有这些值都来自表中的一列(十进制(10,3)-mysql),并且基于unittype列,我必须决定在BIRT报告中是否有3位小数或零小数.
我知道通过脚本编写值可以修改..但我无法利用脚本.
我在onFetch上写这个
if(row["unittype"]=="Nos")
var df = new Packages.java.text.DecimalFormat("#,###.##");
else
var df = new Packages.java.text.DecimalFormat("#,###");
df.format(row["invoicedquantity"]);
this.setDisplayValue(df);
Run Code Online (Sandbox Code Playgroud)
我无法得到这些价值观
我不相信这可以从onFetch脚本起作用,这种脚本应该放在数据元素的"onRender"事件中.此外,格式化程序返回结果,因此它应该是:
this.setDisplayValue(df.format(row["invoicedquantity"]));
Run Code Online (Sandbox Code Playgroud)
但我认为在数据集中使用表达式创建计算列作为数据类型"String"会更容易:
if(row["unittype"]=="Nos"){
Formatter.format(row["invoicedquantity"],"#,###.## Kg");
}else{
Formatter.format(row["invoicedquantity"],"#,### Kg");
}
Run Code Online (Sandbox Code Playgroud)
编辑: 经过深入研究,我发现了一种更合适的方法,即改变"numberformat"属性.在数据元素的onRender或onCreate脚本(应该是数字数据类型)中,我们可以执行以下操作:
if(row["unittype"]=="Nos"){
this.getStyle().numberFormat="#,###.## Kg";
}else{
this.getStyle().numberFormat="#,### Kg";
}
Run Code Online (Sandbox Code Playgroud)
这是一种更好的方法,因为数据元素仍然具有数值数据类型,因此如果报告在excel中导出,则excel会将其识别为数字.
| 归档时间: |
|
| 查看次数: |
10711 次 |
| 最近记录: |