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

明細を持つ伝票とその複写を同じページに2分割して表示する

同内容の 送り状 と 納品書 をA4縦の用紙に上下2分割で出力したい。1ページの行数は固定で、複数ページにわたる場合もあります。

というような質問がありました。他にも、請求書と領収書、正票と控え、というような2つの同内容の伝票を1枚の用紙に2分割で出力したいという要望はよくあると思います。

RptFixRowCopiesV.png

サブレポートを使うというのがまず思いつく方法です。ただ、複数ページにわたる場合があるとサブレポートでは改ページできないので、ページ情報を持たせるなど面倒です。あとは、VBAでワークテーブルに出力してそれをレポートのレコードソースとするというのもありますが、ワークテーブルはMDBの肥大化を招くのであまり使いたくないです。

そこで、サブレポートもワークテーブルも複雑なクエリも使わずに実現する方法を考えてみました。

難易度:

質問では縦の用紙に上下2分割ですが、発想を変えて、用紙を横にして左右2分割というレイアウトにすれば簡単に実現できます。

まず、普通に1枚分のレポートをデザインして、レポート幅を広げて、右側に全てのコントロールをコピーして貼り付けるだけです。

当然、罫線も固定して出力したいということになると思いますので、それは以前のTips
レコードがない場合も用紙の最後まで罫線を出力する を利用します。

サンプルMDB「R_納品書_左右」のプレビュー
RptFixRowCopiesH.png

左右ではダメだ、どうしても上下に分割したいという場合は、上記の Tips の応用で実現できます。

ページヘッダーに2伝票分のヘッダー項目と罫線をすべて配置します。

ヘッダー項目のキーフィールド(書類番号、受注コードなど)でグループ化して、グループヘッダーとグループフッターを表示させます。グループヘッダーの高さは、ヘッダー部分の高さから明細行1行分の高さを引いた値に設定します。

このグループヘッダーページヘッダーのフォーマット時のイベントプロシージャに下記の1行を記述します。

グループヘッダーの[セクション繰り返し]を「はい」に設定します。グループフッターの[改ページ]は「カレントセクションの後」に設定します。

さらに明細テーブルの主キーフィールドでグループ化してグループヘッダーを表示させます。このグループヘッダーの高さは明細1行分の高さにします。

詳細セクションに、明細のフィールドをテキストボックスとして配置します。さらに、配置したテキストボックスをコピーして貼り付けてから、セクションの高さをひろげて、伝票1枚分の高さの間隔があく位置まで移動させます。

詳細セクションのフォーマット時のイベントプロシージャに下記の1行を記述します。

あとは、この詳細セクションの高さを調整して1ページに希望の行数が収まるようにします。

動作原理の解説

  1. まず、ページヘッダーで伝票2枚分のヘッダー項目と罫線を出力します。MoveLayout = False で印字位置は移動しません。
  2. 親のグループヘッダーと明細のグループヘッダーを出力して、印字位置を明細行1行目まで移動します。
  3. 詳細セクションで、明細データを1伝票分の間隔を開けて2つ出力します。MoveLayout = False で印字位置は移動しません。
  4. 2レコード目の明細のグループヘッダーを出力して明細1行分の高さだけ印字位置を移動します。
  5. 詳細セクションで2レコード目のデータを2伝票分出力します。
  6. 以下、レコード数分繰り返します。

サンプルMDB が下記からダウンロードできます。
RptFixRowCopies_07.zip (Access 2007 形式 - 110kb)
RptFixRowCopies.zip (Access 2002-2003 形式 - 107kb)
RptFixRowCopies_2k.zip (Access 2000 形式 - 102kb)

拍手する

9 Comments

set says..."いつも感謝しています。"

「明細を持つ伝票とその複写を同じページに3分割して表示」
使わせていただきました。(^人^)感謝♪です。
縦に3分割してみました。
ただ、2枚目の伝票にいくと明細の印字位置が一行分上に上がるのです。
教わった通りにしているつもりですが、どこが悪いのでしょうか?

ちなみに
「グループヘッダーの高さは、ヘッダー部分の高さから明細行1行分の高さを引いた値」
にすると、一枚目の伝票の明細の位置が一行上に上がるので。
1行0.5cm×7行
グループヘッダーの高さはそのまま3.5cmで一枚目の印字位置はうまくできました。

どこがおかしいのでしょうか?
申し訳ないのですが教えていただけるとありがたいです。
よろしくお願い致します。

OSはXP、access2003を使用しています。

2010.10.20 15:39 | URL | #- [edit]
set says..."できました!"

ありがとうございました。

「商品コード」のグループ化で
同一ページ印刷を「グループ全体」にしたら
できました。

とても役に立っています。
本当に感謝です。
(人-)謝謝(-人)謝謝

2010.10.25 11:59 | URL | #- [edit]
ZENZEN says..."失礼します。質問させて頂いて宜しいでしょうか。"

こちらの記事を参考にして、縦に3分割した伝票をレポート形式で作成しております。お蔭様でそれらしい形にはなってきたのですが、一点だけ上手くいかないことがあります。
明細の合計フィールドは明細のフッターに置かないといけないと思っていますが、そうすると繰り返しが出来ない状態になってしまいます。
明細の合計を3伝票分表示させるにはどのようにすれば良いのでしょうか。

3年前の記事に対して今更とお思いかも知れませんが、
ご教示頂ければ幸いです。

失礼いたしました。

2013.07.01 11:37 | URL | #Ld4VpZwo [edit]
hatena says...""

サンプルでは合計も表示しています。

伝票のメインのグループヘッダーにテキストボックスを配置してSum関数で集計します。「可視」は「いいえ」にします。

ページヘッダーの合計欄にテキストボックスを配置して、そこで上記の集計テキストボックスを参照します。

言葉だけではわかりにくいですが、
サンプルファイルをダウンロードしてみてもらうと分かると思います。

2013.07.01 15:14 | URL | #5uE6dEgY [edit]
ZENZEN says..."ありがとうございます。"

>hatena様
早速回答いただき、ありがとうございます。
計算しておいて、それを三回参照すれば良いということでしょうか。
納得です。


サンプルは先週ダウンロードしたのですが、上手く開くことが出来ずに試行錯誤しておりました。現時点でも参照は出来ておりませんが、今回のご説明で少し理解できた気がします。早速やってみます。
お忙しい中有難うございました。

2013.07.01 16:06 | URL | #Ld4VpZwo [edit]
hatena says..."サンプル"

Accessのバージョンはなんでしょうか。

開かないとは具体的にどのような状態でしょうか。
エラーメッセージが出るならそれも教えて下さい。

文章だけでは伝わりにくい部分がありますので、できれば実物を見てもらえると理解しやすいのですが。

2013.07.01 17:53 | URL | #5uE6dEgY [edit]
ZENZEN says..."度々失礼いたします。"

hatena様

度々お手数かけております。
サンプルファイルを開くことが出来ました。
単純に私がブロック解除をしていなかったことが原因です。
(お恥ずかしい限りです。)
サンプルを見て理解できたと思います。
無事に3段組の伝票で、それぞれに合計金額欄を表示させることが
できました。
ありがとうございました。

2013.07.02 09:34 | URL | #Ld4VpZwo [edit]
しぃ says..."上下別のレコードを表示したい"

いつもありがとうございます。
また質問したいことができましたので、
ヒントをいただきたいと思います。

明細と複写を1ページに収めるレポートを使用していますが、
使用している部署から、控(複写部分)は使用しないので
明細部分だけを印字して欲しいとの依頼がありました。

現在ミシン目入りのA4用紙を使用していますので、
2レコードを上下2段に出力したいと思っています。

明細と複写を1ページに収めるレポートを加工することで、
上下2段を別のレコードにして印刷することは可能でしょうか?

2015.12.10 14:44 | URL | #PyFckM9o [edit]
hatena says..."re:上下別のレコードを表示したい"

> 現在ミシン目入りのA4用紙を使用していますので、
> 2レコードを上下2段に出力したいと思っています。

罫線などは印刷済みの定形用紙ということでしょうか。

> 明細と複写を1ページに収めるレポートを加工することで、
> 上下2段を別のレコードにして印刷することは可能でしょうか?

レポートのレイアウトとかの詳細の情報も欲しいのでこのコメント欄で続けるのは難しいと思いますので、下記の掲示板の方で再質問してもらえますか。

http://hatena-access.progoo.com/bbs/

その時に用紙のレイアウトの画像等も添付してもらえると分かりやすいです。

2015.12.13 08:25 | URL | #5uE6dEgY [edit]

Leave a reply






Trackbacks

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