2011-11-08 4 views
0

私はBirtの初心者です(実際には最初の1日です)。私の仕事は、Flash/Flexで行ったようなBirtレポートを作成することです。本当によく。Birtのコンポジットフィールド

問題がある:イム私のFlexソリューションは、私は数値が0以上であれば、数値出力に続くラベルで構成され、データグリッドの一つのフィールドを持っています。

レコードセット行の2つの値に基づいて、私はBirtのマッピング機能を適用することで国際化値を取得しました(これは既に有効です)。

デザイナを使用しているときは、自分のテーブルセルまたはテーブル行に2番目のフィールドしか配置できませんが、結果セットの文字列は " 1つのテーブルセルに両方のフィールドを出力できないようです。

誰かが私をこのように導くことができれば素晴らしいだろう。

クリス

答えて

2

あなたはJavaScriptをexpession ダイナミックテキストで文字列全体を構築することができます。 JavaScriptで

使用して国際化を簡単にBIRT FAQに記載されています。 1つの、興味深い質問がHow can I localize strings in JavaScriptかもしれない - この式は、ローカライズされたテキストを提供します:

reportContext.getMessage("companyNameKey", reportContext.getLocale()) 

行データはrow配列に格納されています。式ビルダーで使用可能なすべてのフィールド。あなたが見つけてダブルクリックする目的のフィールドとして、それはこのように表現を表示されます。

row["FOO_NUMBER"].value 

すべて一緒に置く:jinowolskisポストへ

reportContext.getMessage("Foo number:", reportContext.getLocale()) + 
    (row["FOO_NUMBER"].value > 0) ? ("("+row["FOO_NUMBER"].value+")") : ("") 
+0

こんにちは...ありがとうございます。それはトリックでした:-) ...私の "FOO_NUMBER"はフロート型であるため、値を追加すると "未定義"が出力されます。それを離れると、dynamicTextは期待通りに機能します。これを解決するために残された唯一のことは、レポートロケールに関する浮動小数点数を出力させることです(現在浮動小数点数は米国では正しい "1.4"の形式で出力されますが、ドイツでは "1,4" ) –

1

おかげで...ちょうどちょうど場合は、完全なソリューションを追加したいです誰も同じ問題に遭遇します:-)

importPackage(Packages.java.text); 
var myKey = "" + row["vulnerabilityClass"] + "." + row["result"]; 
if(row["cvssScore"] >= 0) { 
    var nf = NumberFormat.getNumberInstance(reportContext.getLocale()); 
    nf.setMinimumFractionDigits(1); 
    nf.setMaximumFractionDigits(1); 
    reportContext.getMessage(myKey, reportContext.getLocale()) + " (" + nf.format(row["cvssScore"]) + ")"; 
} else { 
    reportContext.getMessage(myKey, reportContext.getLocale()); 
}