MS Access Tips/Sample and VBA and Blog customize etc...

用紙の最後まで罫線を出力し、グループ毎に Page/Pages を表示する

掲示板で下記のような質問がありました。

hatena の Microsoft Access 掲示板|レポート背景にPDFを使用しデータを1行ずつ印刷する帳票作成|ツリー表示 > スレッドNo.2075

ここで問題になったのが、下記の2つを同時に設定すると、ページ数がグループ毎にならずに、すべて「1/1、1/1・・・」となってしまうという症状が発生するということです。

レコードがない場合も用紙の最後まで罫線を出力する - hatena chips

グループ毎に Page/Pages 形式のページ数を表示する - hatena chips

この2つを同時に実現したいという要望は結構ありそうです。そこで、この不具合に対する対処法と、さらに「次頁へ続く」を表示する機能も追加したサンプルを作成しました。

用紙の最後まで罫線を出力し、グループ毎にPage/Pagesを表示する

難易度:

仕様

下記のような仕様です。

用紙の最後まで罫線を出力する。
グループ毎にPage/Pages形式のページ数を表示
合計は、最初のページのみ表示
次ページへ続くときは「次頁に続く」と表示。

サンプルレポートプレビュー

概要

すべてページ表示が「1/1、1/1・・・」となってしまう原因は、
グループヘッダーのフォーマット時で、Me.Page = 1 と初期化をしている。
グループヘッダーの「セクション繰り返し」プロパティを「はい」にしているため、
全てのページにグループヘッダーが表示される。
そのため毎ページ初期化されてページ数が1になる。

冒頭の掲示板の回答では、
同じフィールドでグループをもう一つ作成する。、
グループヘッダーを表示させて、高さは0にする。
このフォーマット時に、Me.Page = 1 の初期化コードを移動する。
という方法を提案しました。

これでもいいのですが、「グループ毎に Page/Pages 形式のページ数を表示する」の中の「ページヘッダーに表示する場合」のコードを使えばグループフッターを追加しなくても正常にページ表示されます。これは、初期化をグループフッターでしているので、グループヘッダーの「セクション繰り返し」の影響を受けないためです。また、この方法はページヘッダーだけでなく、ページフッターにページ表示する場合でもそのまま使えます。

ということでサンプルではこちらの方法を採用しました。

レポートモジュール

ページフッターにラベルを配置して標題を「次頁へ続く」、名前を lblContinue とします。

レポートのモジュール

合計テキストボックスのコントロールソースは、

=IIf([Page]=1,[合計],Null)

として1ページ目のみ合計が表示されるようにしました。

1ページの行数は、ページフッターの高さを調節して、希望の行数で改ページされるように調節します。

サンプルファイルが下記からダウンロードできます。
RptFixRowPagePages_07.zip (Access 2007-2010 形式 - 85kb)
RptFixRowPagePages.zip (Access 2002-2003 形式 - 82kb)
RptFixRowPagePages_2k.zip (Access 2000 形式 - 82kb)


拍手する

1 Comments

ao says..."ページごとに小計"

お世話になります。
ページごとに小計を表示するにはどうすればよいのでしょうか?
いろいろためしたのですができませんでした。
宜しくお願いします。

「ページ毎の集計をページフッターに表示する方法」でできました。
有難うございました。

2014.12.09 09:58 | URL | #8FaAqT52 [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/396-b80041dd
該当の記事は見つかりませんでした。