1ページに複数明細が存在する場合

128 views
Skip to first unread message

seki

unread,
Jun 19, 2022, 8:07:57 PM6/19/22
to RapidReportサポート QAフォーラム
お世話になっております。

1ページ中に明細が混在したレイアウトを作成したいと考えております。

・ヘッダ部
・明細1(5行)
・明細2(10行)
・フッタ部

1ページ中に明細1(5行)と明細2(10行)の二つの明細があります。
以下のような動作をさせたいと考えております。
①明細1が5行を超える、明細2は10行以下の場合
 明細1の6行目以降を2ページ目に出力、2ページ目の明細2は枠線のみ
②明細1が5行以下、明細2が10行を超える場合
 明細1は枠線のみ、明細2の11行目以降を2ページ目に出力
③明細1が5行を超える、明細2も10行を超える場合
 明細1の6行目以降、明細2の11行目以降を2ページ目に出力

このような出力が可能かどうか、またその方法をご教授願います。

RapidReport

unread,
Jun 19, 2022, 10:45:45 PM6/19/22
to RapidReportサポート QAフォーラム
可能ですが、レポートデザイナ上の指定だけでは無理で、
プログラムからの制御が必要となります。

利用されているプログラミング言語を教えていただければ
サンプルコードを提供します。

2022年6月20日月曜日 9:07:57 UTC+9 seki:

seki

unread,
Jun 20, 2022, 12:36:00 AM6/20/22
to RapidReportサポート QAフォーラム
ご回答ありがとうございます。
言語はC#になります。

2022年6月20日月曜日 11:45:45 UTC+9 RapidReport:

RapidReport

unread,
Jun 20, 2022, 8:21:03 PM6/20/22
to RapidReportサポート QAフォーラム
サンプルコードを作成しましたので、ご確認ください。
https://rapidreport.systembase.co.jp/support/example2022062101.zip

サンプルにはRapidReportのdllファイルが含まれていないので、
実行する場合は example/lib フォルダに必要なファイルを配置してください。

このサンプルでは、明細1/2のデータをPagedDataSourceというクラスを作成することで拡張し、
それぞれが割り付けられるべきページ数を返すpage_indexという列を追加しています。
これらのデータを、帳票内の指定したグループへ割当を行っています。
データの部分割当については以下の記事をご覧ください。

さらに、必要なページ数全体を表すクラスPageCountDataSourceを作成して、
帳票全体で必要となるページ数を求めています。

2022年6月20日月曜日 13:36:00 UTC+9 seki:

seki

unread,
Jun 21, 2022, 1:22:59 AM6/21/22
to RapidReportサポート QAフォーラム
ありがとうございます。
大変参考になりました。
今後ともよろしくお願いいたします。
2022年6月21日火曜日 9:21:03 UTC+9 RapidReport:

seki

unread,
Jul 7, 2022, 5:55:05 AM7/7/22
to RapidReportサポート QAフォーラム
追加で質問よろしいでしょうか?
上記サンプルでそれぞれの明細のフッターにそれぞれの明細に次ページのデータが存在する場合
「次ページへ」
と表示させたいのですが、それぞれの明細の最終ページか否かはどう判定したらよろしいのでしょうか?

2022年6月21日火曜日 14:22:59 UTC+9 seki:

seki

unread,
Jul 7, 2022, 9:35:45 PM7/7/22
to RapidReportサポート QAフォーラム
自己解決しました。
report.GlobalScopeにそれぞれの明細のPageCount()を追加
report側でglobal.上記のページ数と、 page_index列比較すれば最終ページか否かを判定することができました。

2022年7月7日木曜日 18:55:05 UTC+9 seki:
Reply all
Reply to author
Forward
0 new messages