5

5 つの固定列を持つ Jasper レポートを生成しています。クライアントは、実行時に列数を選択する機能を要求しました。

たとえば、表示された JTable から 2 つの列をチェックすると、Jasper レポートに 2 つの列が表示され、4 をチェックすると、Jasper レポートに 4 つの列が表示されます。これを解決するために、jasper レポートに条件を追加することを考えています。クライアントが列 A を選択すると、BI はそれをレポートのパラメーターとして設定し、それを使用して列を表示するかどうかを決定します。

これらを行うには、Jasper XML で条件を使用する必要があります。レポートのどこに条件を設定すればよいですか。

4

3 に答える 3

3

以下を試すことができます

  1. を作成しHashMap、必要なプロパティを設定します

    Map params = new HashMap();
    params.put("DISPLAY_COLUMN_ONE", "Y")
    
  2. paramsメソッドでこのマップを Jasper に渡します

    JasperFillManager.fillReport

  3. JRXML で、上記のハッシュマップに設定された各プロパティに対応するパラメーターを作成します。

    <parameter name="DISPLAY_COLUMN_ONE" class="java.lang.String"/>

  4. パラメータ値に基づいて列を表示します

    <printWhenExpression><![CDATA[$P{DISPLAY_COLUMN_ONE}.equals("Y")]]></printWhenExpression>

于 2012-06-02T15:57:35.047 に答える
2

columnCountパラメーターを jasper に渡し、各列の Print when Expressionで条件を確認する必要があります。

式が次の場合に最初の列を印刷

$P{columnCount} >=1

2 列目の式が次の場合に印刷

$P{columnCount} >=2

3 列目の式が次の場合に印刷

$P{columnCount} >=3

第 4 列Print when Expression

$P{columnCount} >=4

これがお役に立てば幸いです。

于 2012-06-02T17:06:10.447 に答える
0

列数のバリエーションごとに 1 つずつ、jasper レポートの複数のコピーを作成するだけです。冗長性が高いかもしれませんが、可能なバリエーションの数が多すぎない限り、非常に簡単です。最終的に呼び出すレポートは、ユーザーの選択によって異なります。

条件に基づいてレポート内の列を変更する方法が思い浮かびません。

于 2012-06-02T15:20:16.337 に答える