🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JasperReports

JasperReportsはオープンソースの帳票生成ツールです。JasperReportはPDF, HTML, Microsoft Excel, ODT, XML等の様々なフォーマットのものをエクスポートします。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

20887閲覧

JasperPdfでのPDF改ページの条件を設定するには

kumakumatan

総合スコア213

JasperReports

JasperReportsはオープンソースの帳票生成ツールです。JasperReportはPDF, HTML, Microsoft Excel, ODT, XML等の様々なフォーマットのものをエクスポートします。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/09/12 01:40

編集2019/09/12 04:42

・eclipseバージョン :Mars2 Release 4.5.2
・jasperreportsバージョン:6.0.0
・jdk1.8.0_91

商品名($F{name})について

(1)件数が2件より多くなったら、改ページをする

かつ

(2)価格($F{price})が変更になったら改ページをする

ような制御はどこで入れるのでしょうか?

アウトラインの詳細1プロパティの箇所で設定できるのかとも思うのですが、
どこに設定したらいいのか不明な状態です。

SQLなどでソートはしていません。
改ページする際の条件を知りたくてご質問しました。

詳細の設定箇所は添付します。

どなたかご教授宜しくお願いします。

イメージ説明

Breakにてとりあえず、2件ごと改ページをするように設定を入れたのですが、
2ページ目の場合、グループ1グループ・ヘッダー1の「商品名」「価格」
が表示されないでいます。

イメージ説明
イメージ説明

2件表示されたら改ページ
かつ
価格が変更されたら改ページ

例:100円の商品が3つあるとしたら、最初の2件は1ページ目、残りの1件は
2ページ目に表示させたく思います。
200円の商品が1件ある場合は、その商品だけ3ページ目に表示して、4ページ目から
は違う商品300円のものを表示させたく思います。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ababa_Sigrun

2019/09/12 01:54

商品名はSQLでorder byなどでソートしてありますか?
kumakumatan

2019/09/12 01:57

ご回答ありがとうございます。 SQLなどでソートはしていません。 改ページする際の条件を知りたくてご質問しました。
ababa_Sigrun

2019/09/12 04:38 編集

商品名じゃなくて価格で変更するのですか?
kumakumatan

2019/09/12 04:44

すいません。商品名でなく価格で変更します。 1ページあたりの件数は2件で、かつ、価格が変更したら改ページにしたく 思います。 詳細は質問内容を修正しました。 お手数おかけしますが宜しくお願いします。
guest

回答1

0

ベストアンサー

この条件ならばGroup とBreakを使うことで可能だと思います。

(1)についてはカウントすることで実装できそうです。
BreakのprntWhenExpressionに条件を書いて対応が可能です。
Breakでカウントした変数が特定の条件(10の倍数のときなど)にのみ表示するようにすれば改行もそのときだけ行われます。
Break
prntWhenExpression

(2)は商品名($F{name})でCreatGroupをし、Start New Pageにチェックをいれることで商品名が変わるごとに改ページされます。
createGroup


列名が表示されない件について、
①GroupHeaderの下記にチェックをいれてください。
イメージ説明
別の方法としてはPageHeaderに入れて毎回表示させるという方法も・・・


Breakの表示する条件は
同じ金額のものが2件以上表示されている。

とすると。Groupのcountはすればいいので、GroupのCountを参照します。
恐らくGroup作った時に初期自動定義されているのでそちらを使用してください。


Breakの設定箇所は
Detailの一番下にでも入れてください。
(priceにかぶらないようにpriceの下という意味で)
イメージ説明

($V{Group_1_Count}の挙動を見たかったため、TextFieldに記載して表示をみています)

投稿2019/09/12 02:07

編集2019/09/12 08:50
ababa_Sigrun

総合スコア279

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kumakumatan

2019/09/12 04:36

ご回答ありがとうございます。 (2)については、出来ました。 ただ(1)については、Breakをどの部分に入れていいのか(線が引かれる)がわからなく ここでは画像添付できないので、質問内容を編集してみました。 最終的には(1)と(2)の条件が2通りできるようにしたく思います。 とりあえず、2件で改ページをしたく考えています。 宜しくお願いします。
ababa_Sigrun

2019/09/12 04:49

またその際にグループは削除ではなくサイズを0pxとして残しておいてください。
kumakumatan

2019/09/12 04:55

はい。宜しくお願いします。
kumakumatan

2019/09/12 07:35

ご回答ありがとうございます。 価格(SF{price})が変更されたタイミングでの改行を上手くいったのですが、 1ページに表示させる件数を2件の制御がうまくいきません・・。 ご教授いただいた変数(Variable_1)を追記して、列フッターに入れた「中断」の 【Print When Expression】に「$V{Variable_1} % 2 == 0」としましたが 上手くいかないです・・。指定の方法が間違っているのでしょうか? 宜しくお願いします。
ababa_Sigrun

2019/09/12 07:47

COLUMN_COUNTのしたにGroupのCOUNTがないですか? 【Print When Expression】$V{Group1_COUNT}%2==0 として2件の制御はできましたが・・・ どううまくいかないですか?
ababa_Sigrun

2019/09/12 07:53

ちょっとこちらも動かして確認してみます
kumakumatan

2019/09/12 08:00

COLUMN_COUNTのしたに「グループ1_COUNT」があり、 Print When Expression】に「$V{グループ1_COUNT}%2==0」としたのですが、 2件制御はできませんでした・・。 また、作成した変数「Variable_1」は今回のようにある場合は利用しないのでしょうか? 宜しくお願いします。
ababa_Sigrun

2019/09/12 08:13

グループ1_COUNTがあるならそれを使う方向でよいかなと思います。 BreakはDetailの下部に設置ですね・・・
ababa_Sigrun

2019/09/12 08:20

PrintWhenExpresionに$V{グループ1_COUNT}%2==0と設定し、Detailの一番にした付けてテストを行い、動きを確認したところ問題なさそうです。
kumakumatan

2019/09/12 08:43

ご回答ありがとうございます。 $V{グループ1_COUNT}はマウスで詳細欄に持ってくるのでしょうか? それともテキストラベルに変数定義するのでしょうか?
ababa_Sigrun

2019/09/12 08:46

画像の$V{Group1_COUNT}はテキストフィールドにちゃんとカウントができてるかどうか表示するためにつけているだけなのであまり関係ないです。
kumakumatan

2019/09/12 23:23

ありがとうございます。Detail(詳細)の下にbreakを設定するとできました。 大変勉強になりました。ありがとうございます。 今後とも宜しくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問