システム開発ブログ

CrystalReportsで同一定義体でページ番号を付与する

中村(次)

中村(次) (2011年12月 1日 22:29)
システムソリューション事業部 / 帳票

こんにちは、帳票大好き中村です。

さて、最近久しぶりにCrystalReportsに触る機会があり、
ページ番号付与について少し考えさせられたので備忘も含めて記載します。

今回は少し考えてしまったのが、タイトルにもありますように、
同一定義体にてグループごとにページ番号を振るというものです。
定義体は同じものを使用するが、別帳票として扱う場合です。

納品書と受領書あるいは、請求書と請求書(控え)という形に、
まったく同じレイアウトだが、一部分だけ異なる場合を想定しています。
おそらくこの場合は、わざわざレポートを2つ作るのではなく、
同じレポートを使い出力内容を制御するという方法を取ると思います。

請求書が2ページあった場合は、請求書(控え)も2ページ出力されるので、

請求書 1/2
請求書 2/2
請求書(控え) 1/2
請求書(控え) 2/2

という形で出力させる必要がありました。
※【現在ページ/総ページ】という形での出力となります。

データ取得時に計算することも出来ると思いますが、
定義体だけでさくっと終わるであろうと想定していたので、
定義体だけでやったところ、意外と時間が掛かってしまいました。。

さらに今回は明細行数が固定なので、
単純にBreakの値が変わったらという風に出来なかったので、
以下のように対応しました。

【現在ページ】
if (RecordNumber/GroupNumber) <= 20 then
1
else
round(((RecordNumber/GroupNumber)/20) + 0.5)
※切り上げ関数がなかったので敢えて上記のようにしています。


【総ページ】
round((Count(グループ値, グループ値)/20) + 0.5)
※切り上げ関数がなかったので敢えて上記のようにしています。


今回は明細行数が20を超える場合のみ次のページに表示されるので、
上記のように20明細以下であれば、ページ番号に1をセットということをやっています。

ただ、おそらく固定行数の帳票で且つ改ページする場合のページ番号は上記のように
少し強引な方法になるかと思いますが、いかがでしょうか?
もし他にいい方法があれば教えてください!!

ちなみに、固定行の帳票を作成方法は以下を参照してください。
CrystalReportで空行を表示する2

システムのトラブル解決を承ります。すぐにシステムリフォームを体験できますシステム診断・システムリフォームのお申し込みはこちらから。

システム開発ブログ

Twitterでilovex_officialをフォローしてください

最近の記事

カテゴリー

部署

月別アーカイブ

以前の部署別ブログ

ページのトップ