0

BIRT レポートを作成していますが、これが私の状況です。私は1つのテキスト要素を持っています。これを言ってみましょう:

blue square: 111
blue triangle: 222
red circle: 333

現時点では静的で、常に表示されている数値を表示します。数値を動的にしたいので、SQL クエリを作成し、それをデータセットに埋め込みました。これが出力だとしましょう:

color        shape     count
blue         square    123
red          circle    456
blue         triangle  789

各データセット行がテキスト ファイルの正しい行と一致するように設定したいので、次のようになります。

blue square: 123
blue triangle: 456
red circle: 789

そして自動的に更新されます。

テキスト要素をデータセットにバインドし、これをテストとして書きました:

blue square: <VALUE-OF>if (row["color"].toUpperCase() == "BLUE") { row["count"] }</VALUE-OF>
blue triangle: 222
red circle: 333

しかし、レポートを実行すると機能せず、値が空白になります。私は何を間違っていますか?

助けてくれてありがとう。さらに情報が必要な場合はお知らせください。

4

1 に答える 1

0

row[color]row[shape]、を含むデータセットrow[count]ができました。目的の出力を簡素化するために、データセットに「計算列」を追加します。
例えばrow[output] = row[color] + ' ' + row[shape] + ': ' row[count]

計算列を追加したら、データセットをレポート (テキスト要素がある場所) にドラッグ アンド ドロップし、未使用の列を削除します。

ヒント: 「計算列」がわからない場合:
  Google 画像検索で「bird 計算列の例」を
  検索してください。Google テキスト検索では、birt フォーラムのリストで迷子になる可能性があります。

更新: スクリプトレットにタイプミスがある可能性があります。BIRT では、スクリプトレットはそれ自体の最後の式に解決されます。あなたのスクリプトレット<VALUE-OF>if (foo) { bar }</VALUE-OF>には最後の式がありません。
(間違っているわけではありませんが、BIRT はこのように「理解」しない可能性があります)
代わりに、最後の行として<VALUE-OF>var result = ''; if (foo) { result = bar }; result;</VALUE-OF>スクリプトレットを複数のコード行にフォーマットしてみてください。result;これは、スクリプトレットをプログラミング言語の関数と見なし、関数の最後の行がreturn result.

于 2020-11-22T23:10:04.413 に答える