web-dev-qa-db-ja.com

単一のテキストフィールドを使用して「ページX / Y」を表示する

一般的な解決策のように、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だけでなく、どこでも変数が計算されることをどのように保証しますか?

19
qarol

Jaspersoft Studio、6 +

Jaspersoft Studio v6の場合、または最初のページ番号が重複している場合は、 このソリューション を試してください。これは、_$V{MASTER_CURRENT_PAGE}_と_$V{MASTER_TOTAL_PAGE}_を使用し、評価時間はMasterです。

Jaspersoft Studio

Jaspersoft Studioの他のバージョンについては、後続のサブセクションで説明されている手順を試してください。

変数を作成

次のように変数を作成します。

  1. _V_CURRENT_PAGE_NUMBER_という変数を作成します
  2. 変数を選択してそのプロパティを開きます(下図参照)
  3. Expressionを_1_に設定します
  4. 初期値式を次のように設定します:_$V{PAGE_NUMBER}_
    • ページ番号に_0_が表示されている場合は、_$V{PAGE_NUMBER} + 1_を使用します。
    • ページ番号に常に_1 of Y_が表示される場合は、Expressionを初期値式ではなく_$V{PAGE_NUMBER}_に設定し、初期値のままにします式が空です。
  5. Reset typePageに設定します

これらの設定を次の図に示します。

Current Page Number Variable

Expressionを_1_に設定すると、その値がnullになります。つまり、フッターにPagenullof 4Expressionが設定されていないことを意味します。

変数が作成されます。

ページフッターを追加

次のようにPage Footerバンドを追加します。

  1. アウトラインパネルでレポートを選択します
  2. Summary With Page Header And Footerをチェックして、ページフッターがサマリーページに表示されることを確認します。
  3. Page Footerバンドを追加します。

フッターが追加されます。

テキストフィールドを作成

次のようにテキストフィールドを作成します。

  1. 単一のテキストフィールドPage Footerバンドにドラッグアンドドロップします。
  2. テキストフィールドを選択します。
  3. Expressionmsg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})に設定します
  4. 評価時間を次のように設定:Auto

これらの設定を次の図に示します。

Single Text Field

単一のテキストフィールドが作成されます。

レポートをプレビュー

3ページと要約ページを含むレポートの場合、レポートをプレビューすると次のように表示されます。

Page 1

概要ページには次の情報が表示されます。

Page 4

詳細については、この主題に関するRobert Ensingerの ブログ投稿 を参照してください。

25
Dave Jarvis

私は このアプローチ を試しましたが、間違ったページ番号で終わりました:{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

11
MartinW

一般的なアプローチでは、あなたが言及したように、2つの別々のテキストフィールドを使用します。

現在のページ番号

$V{PAGE_NUMBER} with EvaluationTime:Now

総ページ数

$V{PAGE_NUMBER} EvaluationTime付き:レポート

10
lifeisfoo

現在のページ番号については、evaluationTime=nowおよび$V{PAGE_NUMBER}が答えです。

残念ながら、詳細バンドでSplit Allowedがオンになっていると PAGE_COUNT にバグがあるため、期待どおりの結果は得られないと思います。さもないと evaluationTime=nowおよび"Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}"はおそらく機能します。

3
KCD

次のように表示するページ履歴の場合:ページ: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>
1
Imranmadbar

これは私の仕事です(Daveの回答とは少し異なります)

* JasperSoft Studioの使用

Capture: adding Variable

次に、式を含むテキストフィールドを配置します。

"Pág. " + $V{PAGE_NUMBER} +"/" + $V{V_CURRENT_PAGE_NUMBER}

この助けを願っています!

1
perezmirabile

これは、evaluationTimeReportとして使用することで役立つはずです

   <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>
0
Janki

レポートフッターの右側にPage 1 of 5のようなページを表示したくない場合は、ireportまたはjasperレポートのパレットツール(ページX/Y)が最適です。

レポートフッターの左側にPage 1 of 5のようなページを表示しない場合は、ireportを使用します。

以下の手順に従ってください

  1. のように関数変数を作成する

enter image description here

  1. TextFieldを使用してください

    "ページ" + $ V {V_CURRENT_PAGE_NUMBER} + "/" + $ V {PAGE_NUMBER}

enter image description here

0