0

JasperReports/iReportで非常に厄介なエラーが発生しました。最近バージョン3.6.1から4.5.1に移行しましたが、まだ存在しています。

DataSourceストアドプロシージャを実行するjdbcを介して、MSSQLサーバーデータベースからいくつかの情報を引き出すレポートがあります。問題は、次のように、値が1つしかないランダムなデータ行を取得していることです。

ID    Name        Marketing_Preferences
1     John        Y
2     James       N
3     Daniel      Y
                  Y
4     Tim         N

私は元のデータを何度も何度も見てきましたが、これを行う行については何も違いや特別なことはありません。

関連するiReportxml定義は次のとおりです。

<field name="Marketing_Preferences" class="java.lang.String"/>

<staticText>
    <reportElement isPrintRepeatedValues="false" x="504" y="41" width="101" height="15" isPrintWhenDetailOverflows="true">
        <printWhenExpression><![CDATA[new Boolean( $V{PAGE_NUMBER}.intValue() == 1 )]]></printWhenExpression>
    </reportElement>
    <textElement>
        <font size="9"/>
    </textElement>
    <text><![CDATA[Marketing_Preferences]]></text>
</staticText>

<textField isBlankWhenNull="true">
    <reportElement x="504" y="3" width="101" height="15" isPrintWhenDetailOverflows="true"/>
    <textElement>
        <font size="8"/>
    </textElement>
    <textFieldExpression><![CDATA[$F{Marketing_Preferences}]]></textFieldExpression>
</textField>

試行錯誤と条件印刷式の使用により、ダブルアップが1つの出力行に関連付けられていることがわかりました。したがって、Marketing_Preferencesいつ印刷しないように指示するID = 3と、どちらの値も印刷されません。

まず、これがどのように、またはなぜ発生する可能性があるかを誰かが知っていますか?元のデータを何度も確認しましたが、その理由がわからないので、ストアドプロシージャを実行しても、上記のような結果はまったく得られません。

第二に、誰かが私がそれを回避する方法を知っていますか?リストだと思われる場合に次の値を出力しないようにiReportに指示する方法、または結果ごとに1行のみに制限する方法。「繰り返し値の印刷」を使用できません。これは、有効な繰り返し値を印刷しないためです。

どんな助けでも大歓迎です!!!

4

1 に答える 1

1

Marketing_Preferencesテキストフィールドがあるからだと思いますisPrintWhenDetailOverflows="true"

ここにからのjavadocがありますJRElement

isPrintWhenDetailOverflows() これが true に設定されている場合、バンドが現在のページに収まらない場合、要素は次のページに再印刷されます。

于 2012-06-01T01:05:49.390 に答える