こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access 2002 レポートの印刷設定について

先ほど一度投稿しましたが、説明不足と感じ、削除の上、再投稿いたします。
-------------------------------------------------------------

いつもお世話になっております。

あるレポートを、A5サイズで出力し、それをA4の用紙(たて)に上下に2部印刷したいのです。
(図を参照ください)

レポートは所謂「納品書」でして、通常、A51枚で終わります。(A4の用紙に印刷し、半分に切ってお渡ししています。レポートのデザインも、A5に収まるようにしています。)

レポートの構成は、タイトルなどの、メイン部分と、該当レコードを表示するサブレポートで構成されており、該当レコードが増えると、図のようにはならず、A4のたていっぱいに印刷されてしまいます。サブレポートの書式プロパティで、印刷時自動拡張する、に設定しているからですが、これを「しない」にすると2ページ目に移るのかな?と思い、試してみましたが、改ページされず、レコードが部分印刷され、後半(1ページに印刷できない部分)が納品書からもれてしまう、という状態です。

ここからが本題です。
納品書の控えを取りたい、という担当者のため、同じものを2部印刷しているのですが、用紙節約のため、上下に同じものを印刷し、切り離せばお渡しするものと控えが出来上がる、という要望を受けております。専用にドットインパクトプリンタを購入し、複式印刷すればいいのですが、さすがにそこまでの経費は捻出できません。

印刷のプロパティなどを弄ってみましたが、目的を達成できなかったので、質問させていただきました。

まとめますと・・・
1.A5の納品書をA4の用紙に上下2部印刷したい
2.納品件数が多い場合、2枚目以降に印刷したい(サイズはA5のままで)

詳しい方、ご教授のほう、よろしくお願いします。

投稿日時 - 2010-03-26 10:21:12

QNo.5780216

困ってます

質問者が選んだベストアンサー

単に(A5)1ページ分の内容を複製して上下に配置するだけで良いのでは?
1個の「詳細」部分に同じフィールドが何回出てきても問題ありません。
これだと、Accessにとっては1レコードの印刷ですが、できあがりは
同じデータが2回印刷されているように見えます。

投稿日時 - 2010-03-26 11:57:16

補足

ここでしかお礼が書き込めませんので、補足にて。

プロパティを弄っていたら、なんとか思い通りのレポートに仕上げることができました。

結局、レポートデザインを弄るときは、親を開いて弄るのではなく、サブから順に修正すべきだということを学びました。

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

投稿日時 - 2010-03-26 15:48:02

お礼

いつも回答していただきまして、ありがとうございます。

目からウロコでした。

現在、納品書レポートを2つサブレポートとした、親レポートを作り、そこに上下に2つのサブレポートとして納品書レポートを貼り付けました。
親レポート>納品書レポート(2段)>レコード表示用サブレポート
という構成です。

一見、うまくいきます。

が、色々テストをしたのですが、納品件数が少ない場合、下の納品書レポートが勝手に上に上がってしまい、A4用紙を単純に半分に切ることができません。
逆に、件数が多い場合、上の納品書レポートが膨れて、2ページにまたがってしまいます。

件数が多い場合はほとんどないので、今回は許してもらっているのですが、少ない場合でも半分に切ったらOK、という作りは必ずしてほしいそうです。

納品書レポートの書式プロパティで、「サイズ自動修正」は「いいえ」にしているのですが。。。

何かヒントがあれば、またよろしくお願いします。

投稿日時 - 2010-03-26 15:26:30

ANo.1

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

レポートに出力している内容が不明なのですが、
サブレポートのサイズを限界まで広げ、「印刷時拡張」を
「いいえ」にします。これで、ある限度以下の場合は
下のサブレポートが上に移動することはありません。
厄介なのが限度以上に明細がある場合です。
限度を10行と仮定すると、10行毎にグループが発生する
ことになります。親レポートのクエリに工夫が必要です。
以下は一例です。

【親側のクエリ】
SELECT 0 AS G,* FROM 元クエリ WHERE 明細数<= 10
UNION ALL
SELECT 1 AS G,* FROM 元クエリ WHERE 明細数 BETWEEN 11 AND 20
UNION ALL
SELECT 2 AS G,* FROM 元クエリ WHERE 明細数 BETWEEN 21 AND 30
ORDER BY 1,2 ← "G" と 元クエリの最初の項目でソートする意味

明細が10以下なら1レコード、11~20なら2レコードという具合に
出力されるので、親レポートとして、伝票としては1個でもトリガを
複数にすることができる。

【子側のクエリ】
SELECT A.xx,A.yy,~,Int(COUNT(B.xx)/10) AS J
FROM 元明細 AS A LEFT JOIN 元明細 AS B
ON A.xx=B.xx AND A.dd>B.dd GROUP BY A.xx
例えば、日付の昇順に並ぶなら、自分の日付未満の日付のデータの数が
自分の順位(0から)になるわけです。

サブレポートのリンク条件としてはG=Jです。
Jは順位を10で割った商なので、0~9位は0、11~19位は1という具合に
なります。

ちょっとヤヤコシイのですが、実現可能なはずですよ。

投稿日時 - 2010-03-26 16:44:07

お礼

補足とご回答が入れ子になりましたね。締め切ってしまい、すみません。

どうもクエリやVB、SQLは苦手でして・・・。

GUIで可能な範囲で頑張っております(苦笑

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

投稿日時 - 2010-03-26 17:21:11

あなたにオススメの質問