一般的な解決策のように、Page X of Y
を含む1つのテキストフィールドを2つの部分に分割せずに作成したいと思います。テキストフィールドに"Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}"
とevaluationTime=auto
が含まれています。
10ページのレポートがあるとします。 3つはタイトルバンド、6つは詳細バンド、1つは概要バンドです。私の結果はタイトルバンド sの"Page 0 of 10"
を示しています詳細バンド sの正しいカウント、そしてサマリーバンド)の"Page 0 of 10"
s。
Detail Bandだけでなく、どこでも変数が計算されることをどのように保証しますか?
Jaspersoft Studio v6の場合、または最初のページ番号が重複している場合は、 このソリューション を試してください。これは、_$V{MASTER_CURRENT_PAGE}
_と_$V{MASTER_TOTAL_PAGE}
_を使用し、評価時間はMaster
です。
Jaspersoft Studioの他のバージョンについては、後続のサブセクションで説明されている手順を試してください。
次のように変数を作成します。
V_CURRENT_PAGE_NUMBER
_という変数を作成します1
_に設定します$V{PAGE_NUMBER}
_ 0
_が表示されている場合は、_$V{PAGE_NUMBER} + 1
_を使用します。1 of Y
_が表示される場合は、Expressionを初期値式ではなく_$V{PAGE_NUMBER}
_に設定し、初期値のままにします式が空です。Page
に設定しますこれらの設定を次の図に示します。
Expressionを_1
_に設定すると、その値がnull
になります。つまり、フッターにPagenullof 4Expressionが設定されていないことを意味します。
変数が作成されます。
次のようにPage Footerバンドを追加します。
フッターが追加されます。
次のようにテキストフィールドを作成します。
msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})
に設定しますAuto
これらの設定を次の図に示します。
単一のテキストフィールドが作成されます。
3ページと要約ページを含むレポートの場合、レポートをプレビューすると次のように表示されます。
概要ページには次の情報が表示されます。
詳細については、この主題に関するRobert Ensingerの ブログ投稿 を参照してください。
私は このアプローチ を試しましたが、間違ったページ番号で終わりました:{1/7、1/7、2/7 、3/7、4/7、5/7、6/7}。
JasperReports 6以降の場合は、MASTER_CURRENT_PAGE
およびMASTER_TOTAL_PAGES
システム変数を使用し、テキストフィールドの評価時間をMaster
に設定してください。
<textField evaluationTime="Master">
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA[msg("Page {0} of {1}", $V{MASTER_CURRENT_PAGE}, $V{MASTER_TOTAL_PAGES})]]></textFieldExpression>
</textField>
参照: http://jasperreports.sourceforge.net/sample.reference/book/index.html
一般的なアプローチでは、あなたが言及したように、2つの別々のテキストフィールドを使用します。
現在のページ番号
$V{PAGE_NUMBER}
with EvaluationTime:Now
総ページ数
$V{PAGE_NUMBER}
EvaluationTime付き:レポート
現在のページ番号については、evaluationTime=now
および$V{PAGE_NUMBER}
が答えです。
残念ながら、詳細バンドでSplit Allowedがオンになっていると PAGE_COUNT にバグがあるため、期待どおりの結果は得られないと思います。さもないと evaluationTime=now
および"Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}"
はおそらく機能します。
次のように表示するページ履歴の場合:ページ:1 of 5
テキストフィールドを作成します。
"Page: "+$V{MASTER_CURRENT_PAGE}+" of "+$V{MASTER_TOTAL_PAGES}
ソース:
<textField evaluationTime="Master">
<reportElement x="224" y="0" width="186" height="15" uuid="6641bb8b-9f48-4832-942b-8b04220030e6">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Top">
<font size="8"/>
</textElement>
<textFieldExpression><![CDATA["Page: "+$V{MASTER_CURRENT_PAGE}+" of "+$V{MASTER_TOTAL_PAGES}]]></textFieldExpression>
</textField>
これは、evaluationTimeをReportとして使用することで役立つはずです
<textField>
<reportElement x="497" y="0" width="32" height="12" forecolor="#7E8083"
uuid="ef663cfd-4058-40bb-a6d9-de7f9a8164be"/> --update your elements here
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="SansSerif" size="7" pdfFontName="OpenSans-Regular.ttf"/>
</textElement>
<textFieldExpression>
<![CDATA["Page " + $V{PAGE_NUMBER} + " of"]]>
</textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="529" y="0" width="7" height="12" forecolor="#7E8083"
uuid="ef663cfd-4058-40bb-a6d9-de7f9a8164be"/> --update your elements here
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="SansSerif" size="7" pdfFontName="OpenSans-Regular.ttf"/>
</textElement>
<textFieldExpression>
<![CDATA[$V{PAGE_NUMBER}]]>
</textFieldExpression>
</textField>