サブページを明細データの間にいれるには

174 views
Skip to first unread message

unread,
Sep 17, 2015, 8:46:27 AM9/17/15
to RapidReportサポート QAフォーラム

VBで開発しています。
サブページを明細データの値によって指定行位置に印刷したいです。
(サブページの高さをサンプル「コンテントのサイズ変更」を元にHEIGHT列の値でコンテントの高さを可変に設定)
 添
付の「TEST_Mark.rrpt」がサブページになります。

添付のTEST.rrdtのデータMARKNM1以降の列が可変の列で、MARKNM1以降の列のデータがサブページのデータの内容になります。
(サブページは1頁でTEST.rrdtデータのMARKNM1以降の列が設定されている行のタイミングでサブページを追加したい)
※TEST.rrdtのデータMARKNM1迄の列はTEST.rrptの明細内容になり、NEWPAGEの値によって改ページがされます

VBのソースは下記です。
---------------------------------------------------------------------------------
Dim dtPrint As New DataTable '印刷データ用Datatable
'上記データテーブルの値はTEST.rrdt参照


'下記で実行をしています----------------------------------------------------------
Dim cCustomizer As New Customizer'コンテント変更クラス

'TEST_Markサブページとして生成
Dim subReport As New Report(json.Read("report\\TEST_Mark.rrpt"), cCustomizer)
subReport.Fill(New data.ReportDataSource(dtPrint))
Dim subPages As ReportPages = subReport.GetPages()

'TEST帳票出力処理
Dim report As New Report(json.Read("report\\TEST.rrpt"), cCustomizer)
' 外枠帳票にサブページを登録します
report.AddSubPages("Mark", subPages)
' 外枠帳票の中でサブページが正しく割り当てられるようにSubPageDataSourceを渡します
report.Fill(New data.SubPageDataSource(subPages, Nothing, "page1"))

Dim pages As ReportPages = report.GetPages()
'帳票定義 設定ファイルの設定
pPrinter = New Printer(pages)

'印刷
pPrinter.PrintDocument.Print()
---------------------------------------------------------------------------------

(例)添付のTEST.rrdtのデータの場合の印字イメージ
(1ページ目)
        ヘッダー
        明細1
        明細2
        明細3
        明細4
        明細5
        サブページ(別途 別途内容)

(2ページ目)
        ヘッダー
        明細6
        明細7
        明細8
        明細9
        サブページ(別途 別途内容)
                (詳細 詳細内容)

TEST.zip

RapidReport

unread,
Sep 17, 2015, 8:49:07 PM9/17/15
to RapidReportサポート QAフォーラム
伊藤です。

このような場合は、サブページを使うのではなく
コンテントの生成条件を設定して対応したほうがよいと思います。

サンプルを作成しましたので、どうぞご確認ください。
TEST.zip

unread,
Sep 17, 2015, 9:11:21 PM9/17/15
to RapidReportサポート QAフォーラム
返答ありがとうございます。

ただ、今回サブページ自身、1帳票として単独で印刷もしますし、
他帳票でも、同サブページを出力する等があり、
同一帳票定義ファイル(TEST_Mark.rrpt)を使用したいと考えております。
(※メンテナンス等で2重管理をしていかないといけない為)

何とかできる方法等ないのでしょうか?

RapidReport

unread,
Sep 17, 2015, 10:25:55 PM9/17/15
to RapidReportサポート QAフォーラム
伊藤です。

何とかできる方法は無くもないのですが、現状のサブページの仕様ですと、
どの明細行にどのページを割り当てるかを制御するプログラムを開発する必要があり、
かえって複雑になってしまうかと思います。

大変申し訳ありませんが、各定義ファイルにそれぞれ定義する方法を今はお勧めします。
デザイナで要素のコピー&ペーストは行えるので、これで対応して頂くようお願いいたします。

今回求められているように、
単に他の定義ファイルに含まれるコンテントの内容を再利用するための仕組みについては、
サブページとは別の新しい仕組みとして、今後の機能追加の課題とさせて下さい。

unread,
Sep 17, 2015, 10:38:05 PM9/17/15
to RapidReportサポート QAフォーラム
返答ありがとうございます。
サブページが必ず1ページの場合にするのであれば、方法を教えて頂けたら幸いです。
宜しくお願いします。

RapidReport

unread,
Sep 18, 2015, 12:49:31 AM9/18/15
to RapidReportサポート QAフォーラム
伊藤です。

サブページが常に1ページしかないのであれば、
サブページ要素の[式]に0 と指定すればよいです。
これで、サブページの最初のページが割り当てられるという意味になります。

この場合、SubPageDataSourceは使わずに、
サブページと外枠帳票にそれぞれ出力したいデータソースをそのまま渡して下さい。


unread,
Sep 20, 2015, 10:21:09 AM9/20/15
to RapidReportサポート QAフォーラム
返答ありがとうございます。
 
サブページと外枠帳票にそれぞれ出力したいデータソースをそのまま渡すとは
GroupDataProviderを使用するということでしょうか?
上記で式に0を設定しても下記のような当初のようなイメージになりません。
ご教授の程宜しくお願い致します。
 
※初めに添付したTEST.rrdtのデータの場合の印字イメージ

RapidReport

unread,
Sep 23, 2015, 8:08:53 PM9/23/15
to RapidReportサポート QAフォーラム
伊藤です。

1ページ目と2ページ目のサブページに出力される内容は異なるのでしょうか?
そうだとすれば、式に0と設定する方法は使えません。
帳票全体でサブページが1度しか現れない状況かと理解して
この方法を紹介しておりました。すみません。

また、GroupDataProviderでは、サブページにデータは渡せません。

やはり、サブページを使わない方法を採って頂くことは難しいでしょうか?

unread,
Oct 1, 2015, 11:12:33 PM10/1/15
to RapidReportサポート QAフォーラム
返答ありがとうございます。
RapidRportでは難しい旨を伝えて、
サブページを、使用しない方向で進めることにしました。
Reply all
Reply to author
Forward
0 new messages