2

Birt は 3 つの数値/数字タイプをサポートしています (例: データセットの出力列):

  • Integer
  • Decimal
  • Float

同時に、BIRT には 1 つ (はい! 1 つ!!!) の数値用の css 組み込み形式しかありません。つまり、たとえば int (日) と decimal (金額) がある場合、それらに組み込みの 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 の数値型システムでの混乱をどのように処理していますか?

4

1 に答える 1

1

BIRT API には、このプロパティ定義があります。

一般に、すべての「プロパティ」、「列」、「フィールド」、またはそのデータ型を含むプロパティがある限り、そのオブジェクトと呼ぶものでソースコードをチェックする場合、次のいずれかであることに気付くでしょう。このオブジェクト フィールドは、データ型の文字列名です。ということで、APIはこの文字列フィールドで選択したデータ型を検証しているようです。

たとえば、DataSet で出力列を作成し、そのデータ型として 10 進数を選択した場合、ドロップダウンの表示名は実際には「10 進数」である CamelCase ですが、XML 名は「10 進数」です。試すことができた

 resultSetColumn.setDataType("Decimal");

したがって、これと同じ方法で、その正確なタイプをプログラムで確認できます。

以下は、DataSet 列の一般的なデータ型のリストです。

http://www.eclipse.org/birt/ref/rom/structs/ResultSetColumn.html#Property-dataType

更新: DesignChoiceConstant の静的定数を使用できます。これには、BIRT で使用できるデータ型が含まれます。また、css、ラベル、許可された値のリストなど、他の BIRT API に使用できるプロパティ名と値も含まれます。

于 2012-10-06T06:45:19.773 に答える