2

Birt 支持 3 种数字/数字类型(例如,对于数据集中的输出列):

  • Integer
  • Decimal
  • Float

同时,BIRT 有唯一的 1(是的!一个!!!)数字的 css 内置格式。这意味着如果你有,例如 int(天)和 decimal(数量),你不能为它们使用内置的 css 样式(你已经定义了自己的并将它们应用于每个项目)。

走得更远。您从 BIRT 调用 Java 类并将所谓的Integer值传递给它。你在 Java 中得到了什么?正确DoubleInteger在我们最初拥有价值的那个水平上,现在是没有办法的。

当然,在某些情况下,您可以尝试根据值猜测数据类型。例如

    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 号码类型系统中的所有这些乱七八糟的东西

4

1 回答 1

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、标签、允许值列表等。

于 2012-10-06T06:45:19.773 回答