- - PR -
Crystal Reports 固定行数にて出力した場合の集計フィールド
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-19 16:04
初めまして。
Visual Studio 2005(VB.NET) Crystal Reports XI にて帳票出力の開発を行なっております。 件名にあります通り、固定行にて出力し、金額の合計値も出力しております。 この際、複数ページにわたる印刷の場合、合計値が下図のようになってしまいます。 ※固定行数5行の場合 CASE1:明細数4の場合 ------------------------------------------ ページヘッダ ------------------------------------------ グループヘッダ ------------------------------------------ 明細 明細 明細 明細 空行 ------------------------------------------ 合計値 CASE2:明細数7の場合 (1ページ目) ------------------------------------------ ページヘッダ ------------------------------------------ グループヘッダ ------------------------------------------ 明細 明細 明細 明細 明細 ------------------------------------------ (2ページ目) ------------------------------------------ ページヘッダ ------------------------------------------ グループヘッダ ------------------------------------------ 明細 明細 合計 空行 空行 ------------------------------------------ CASE2の2ページ目を以下のように出力したいと考えています。 ------------------------------------------ ページヘッダ ------------------------------------------ グループヘッダ ------------------------------------------ 明細 明細 空行 空行 空行 ------------------------------------------ 合計 現状、合計はレポートフッターに仕込んであるのですが、複数ページに渡る場合、うまくいかず、困っています。 「ページ下部へ出力」のチェックをオンにすると、複数ページでもCASE1のように出力されるのですが、明細部と合計値に空白ができてしまいます。明細部の直下に(くっつけて)出力したいので、良い方法がございましたらご教授下さい。 | ||||||||
|
投稿日時: 2007-02-19 16:49
固定行を出力するための実装はどのようになっているでしょうか? こちらの実装によって、解決が難しい状況にあるような気がします。
レポート フッタはその名とおり、レポートの最後でしか出力されません。 今回はグループの集計なのですから、グループ フッタで出力するのが適切でしょう。 おそらく固定行を出力するための仕組みに問題があって、それがままならないのではないかと推測しています。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-02-19 18:03
早速のご返答ありがとうございます。
>固定行を出力するための実装はどのようになっているでしょうか? >こちらの実装によって、解決が難しい状況にあるような気がします。 上記に関しましては、以下のURLの情報を参考にして実装しております。 ■Crystal Reports 9 レポート作成およびレポート コネクティビティ FAQ http://japan.crystaldecisions.com/support/crystalreports9/faq.asp#rcon_line ----------------------------------------------------------------------------- レポートに 1 つのグループが挿入された場合を例にして、以下の手順でお試しください。 グループ ヘッダー #1 に『セクションを下に挿入』を選択して、セクションを挿入します。 グループ ヘッダー #1b が挿入されます。 グループ ヘッダー #1b に (縦、横) 線、ボックス線を利用して表を作成します。例えば、10 行分の表を作成します。この時、1 行の高さは、詳細セクションの高さに合わせるようにします。 以下の 2 つの式フィールドを作成します。 (1) グループ ヘッダーに変数を初期化する式フィールドを挿入します。 //変数の初期化 (@init) WhilePrintingRecords; numberVar line_count := 10; numberVar line := 0; (2) 詳細セクションに行数を計算する式フィールドを挿入します。 //行数の計算(@control_line) WhilePrintingRecords; numberVar line_count; numberVar line; line := line + 1; line := remainder(line, line_count); 上記の (1), (2) の式フィールドは、非表示とします。 グループの変更オプションから「ページごとにグループ ヘッダーを出力」をチェックします。 セクション エキスパートからグループ ヘッダー #1b の「続くセクションをアンダーレイ」をチェックします。 セクション エキスパートから詳細セクションの「出力後に改ページ」の条件式 (X-2) に以下の式を挿入します。 WhilePrintingRecords; {@control_line} = 0 ----------------------------------------------------------------------------- また、上記だけでは、合計値のみが改行されてしまったので、グループフッターにも以下の条件式を挿入しております。 「出力後に改ページ」の条件式 (X-2) WhilePrintingRecords; {@control_line} = 0 >レポート フッタはその名とおり、レポートの最後でしか出力されません。 >今回はグループの集計なのですから、グループ フッタで出力するのが適切でしょう。 >おそらく固定行を出力するための仕組みに問題があって、それがままならないのではな>いかと推測しています。 すみません、記述がたりませんでした。 始めは、合計値はグループフッターに仕込んでありました。 ですが、うまくいかなかったので、現状はレポートフッターに仕込んであります。 この理由は、開発において、印刷ジョブ1個当たり、1グループとしているので(グループによって、両面印刷/片面印刷が切り替わる為)、結局はレポートの最後に合計値が出力されると判断し、こちらならうまくいくかと試したのですが、出来ていないのが実情です。 [ メッセージ編集済み 編集者: サラギ 編集日時 2007-02-19 18:11 ] | ||||||||
|
投稿日時: 2007-02-19 18:50
それでしたら、ページ フッタに式フィールドを仕込んだ方が楽だと思います。 式フィールドの出力条件に最終レコードに達したかどうかの判定をつけておけば良いです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-02-19 19:33
早速試してみたのですが、「ページ下部へ出力」のチェックをオンにした場合と同様、空白が出来てしまいました。
ボックス線で囲って出力しており、明細部の直下にくっつけて出力したいのです。 たびたび申し訳ありませんが、他に方法等ご存知でしょうか。 | ||||||||
|
投稿日時: 2007-02-19 19:40
それは、ページ フッタ セクションの位置が希望どおりでなかっただけですから、 あとは自分で調整することで事足りる話だと思うのですが、私の認識が間違っているのでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-02-19 20:05
了解しました。
あとは調整して対応しようと思います。 ご教授ありがとうございました。 ----------------------------------------------------------------- 追記(2007/02/20 12:52) ----------------------------------------------------------------- 思い通りのデザインにすることができました。 ありがとうございました。 [ メッセージ編集済み 編集者: サラギ 編集日時 2007-02-20 12:54 ] |
1