Birt支持3种数字/数字类型(例如数据集中的输出列):
Integer
Decimal
Float
与此同时,BIRT拥有数字的唯一1(是!ONE !!!)css内置格式。这意味着如果你有,例如int(天)和小数(金额)你不能使用内置css样式(你已经定义了自己并在每个项目上应用它们)。
走得更远。您从BIRT调用Java类并将其传递给它所谓的Integer
值。你在Java上得到了什么?纠正Double
。现在我们没有办法在那个级别上最初我们有Integer
值。
当然,在某些情况下,您可以尝试根据值猜测数据类型。 E.g。
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数字类型系统中的所有混乱?
答案 0 :(得分:1)
在BIRT API中,他们有这个属性定义。
一般情况下,如果您要检查源代码,在每个“属性”或“列”或“字段”或您调用该对象的任何内容,只要它具有包含其数据类型的属性,您将注意到该对象字段之一是数据类型的字符串名称。因此,API似乎通过此字符串字段验证所选数据类型。
例如,如果在DataSet中创建输出列并选择十进制作为其数据类型, 下拉列表中的显示名称实际上是CamelCase,它是“十进制”,但XML名称是“十进制”。以编程方式执行此操作,您可以尝试
resultSetColumn.setDataType("Decimal");
因此,您可以通过相同的方式以编程方式验证其确切类型。
下面是DataSet列的常用数据类型列表。
http://www.eclipse.org/birt/ref/rom/structs/ResultSetColumn.html#Property-dataType
更新: 您可以使用DesignChoiceConstant的静态常量,它包含BIRT可用的数据类型。它还包括可用于其他BIRT API的属性名称和值,例如css,标签,允许值列表等。