- PR -

クリスタルレポート改ページ

1
投稿者投稿内容
INC.
会議室デビュー日: 2004/11/25
投稿数: 4
投稿日時: 2004-12-15 11:18
クリスタルレポート初心者です。お願いします。
クリスタルレポートの詳細部分で1ページ目は8行で改ページ、
2ページ以降は14行で改ページとしたいのですが、設定方法がわかりません。

現在,セクションエキスパートの出力後に改ページにチェックを入れて、
以下の記述を追加しているのですが、
2ページ目が6行目で改行されてしまいます。
-----------------------------------------
If PageNumber = 1 then
RecordNumber = PageNumber*8
else If PageNumber > 1 then
RecordNumber = 14
-----------------------------------------

どなたか具体的な方法をご教授していただけませんでしょうか?
よろしくお願い致します。


Ver.CrystalReport 9
GTG
常連さん
会議室デビュー日: 2004/08/26
投稿数: 43
投稿日時: 2004-12-16 07:52
INC.様

詳細部分が1行1レコードで表示させるのであれば、・・
1. ページヘッダーに以下の式フィールドを挿入します。
//変数の初期化
WhilePrintingRecords;
NumberVar GyoCounter:=0;
2.以下の式フィールドを作成します。
//詳細行のカウントアップ
WhilePrintingRecords;
NumberVar GyoCounter;
GyoCounter := GyoCounter + 1;
3. セクションエキスパートから詳細部分の「出力後に改ページ」オプションの条件式に
以下を挿入します。(チェックは不要です。)
WhilePrintingRecords;
If PageNumber <> 1 then
{@上記の式フィールド名} = 14
else
{@上記の式フィールド名} =8

シンプルなレポートであれば、上記の方法で可能だと思います。
また、ちょっと高度に記述をするなら、直接RecordNumberを利用することもできます。
セクションエキスパートから詳細部分の「出力後に改ページ」オプションの条件式に
以下の式を挿入します。

WhilePrintingRecords;
If PageNumber <> 1 then
//2ページ以降
Remainder(RecordNumber - 8, 14)=0
else
//1ページ目
RecordNumber = 8

このRemainder関数は、余りを求めるものです。
この式の場合、レコード件数14で割り切れると値が0の結果になります。1ページ目に8レコード表示しているので、其の数を引いた後、14で割り切れるところが改ページする箇所と判断します。

1

スキルアップ/キャリアアップ(JOB@IT)