伯特支持3个/数字类型的(例如,对于在数据集中输出列):BIRT:Number类型(格式)地狱
Integer
Decimal
Float
在同时,BIRT拥有唯一的1(yes!ONE !!!)css数字内置格式。这意味着如果你有,例如int(天)和十进制(金额),你不能使用内置的css风格(你已经定义了自己并在每个项目上应用它们)。
走得更远。您可以从BIRT调用Java类,并将其传递给它,名为Integer
值。在Java中获得什么?正确Double
。在现在没有办法在那个水平,原来我们有Integer
价值。
当然,在某些情况下,您可以尝试根据值猜测数据类型。 例如
public Object formatFromBirt(Object pObject){
if (pObject == null) return null;
...
if (pObject instanceof Double) {
// workaround for int as double (e.g. days in arrear in total)
LWDecimal dec = new LWDecimal((Double)pObject);
if (dec.getScale() == 0){
pObject = dec.getJavaDecimal().toBigInteger();
}
}
return formatObject(pObject);
}
我最大的问题是 - 人,你如何处理BIRT号码类型系统所有黑金烂摊子?