11

Jasperserver v4.1.0 で iReport v4.0.1 を使用する サブレポートをメイン レポートにリンクするための構文を見つけようとしています。これにより、iReport でテストし、リポジトリ ブラウザーを介してサーバーに展開できます。

サブレポート式の iReport のサブレポートのデフォルトの構文は、次のようなものです。

$P{SUBREPORT_DIR} + "mySubReport.jasper"

これを iReport から展開する場合、これを選択して次のように変更することを提案するのは賢明です。

"repo:mySubReport.jrxml"

次に、すべてのサブレポートをメイン レポートの Resources フォルダーに展開します。

それは素晴らしいことですが、残念ながら、iReport でファイルを編集してこの変更を保存します。つまり、すべてのサブレポート式を手動で再編集しないと、iReport でレポートを実行できなくなります。これにより、テストとサーバーへの展開のプロセスが作成されます。特にレポートに複数のサブレポートがある場合は、非常に苦痛です。

少なくとも $P{SUBREPORT} の値を "repo:" または "My\local\filepath" に設定して、少なくとも 1 つの場所しか変更できないようにできると考えましたが、コンパイラはそうしません。そのように。

レポートの実行元に応じて、repo:*.jrxml または My\local\filepath*.jasper に正しく解決される代替構造または式はありますか?

4

1 に答える 1

13

これに対する最善の解決策は、 のようなパラメータを追加すること$P{IsOnServer}です。デフォルト値を に設定しますtrue。サブレポート式には、次を使用します。

$P{IsOnServer} ? "repo:mySubReport.jrxml" : "/local/path/to/mySubReport.jasper"

iReport でレポートを実行すると、IsOnServer の値を求めるプロンプトが表示されます。偽にしてください。サブレポート式はローカル ファイルに解決されます。サーバーでは、入力コントロールを定義しないでください。ユーザーはそのパラメーターの入力を求められることはなく (パラメーターが存在することさえ知りません)、目的の 'repo' 構文になります。

もちろん、iReport がこれを自動的に処理するのがさらに良い解決策ですが、今のところ、このようなことを行う必要があります。

于 2011-12-02T05:46:45.033 に答える