1枚に二つの帳票を出力するには?

解決


テクテク  2010-10-17 19:18:10  No: 39368  IP: 192.*.*.*

前回2008/09/19(金)のくるくるさんの 質問とは少し違います。

具体的には
A4縦一枚にA5横の納品書  とA5横の受領書を印刷したい

QuickReport1で納品書
QuickReport2で受領書はそれぞれ印刷はできています。

QRCompositeReport1を使っても、データが数枚にわたる場合
QuickReport1納品書がA4上半分に印刷されて、それが終わってから次にQuickReport2で受領書を始めます。そうではなく同時に印刷したい。
QuickReport1とQuickReport2は同じ datesetです。

編集 削除
テクテク  2010-10-17 20:57:36  No: 39369  IP: 192.*.*.*

どうぞよろしくお願い致します。

編集 削除
Quest  2010-10-18 01:28:31  No: 39370  IP: 192.*.*.*

テクテクさん、こんばんは。

> QuickReport1で納品書
> QuickReport2で受領書はそれぞれ印刷はできています。
これはそれぞれ、A5横に単独で印刷できるという意味ですね。

QRCompositeReportを使えば、データが少ない時はA4一枚に納品書と受領書を印刷できていると・・・。
で、データが多くなると改ページの影響で、先に上半分の納品書だけが印刷されてしまうという事でしょうか。

> QuickReport1とQuickReport2は同じ datesetです。
これは、納品書も受領書も同じDataset(テーブルやクエリ)を参照している、
つまり全く同じ内容を、フォーマットを換えて印刷しているという事でしょうか。

QRCompositeReportについては情報が少ないようですね。
私は、Delphi2の頃からQuickReoirtを使っていますが、存在すら知りませんでした。
発想を変えて、A41ページの上半分に納品書、下半分に受領書をデザインして
コードでガリガリ印刷するのはどうでしょう?

編集 削除
テクテク  2010-10-18 20:07:43  No: 39371  IP: 192.*.*.*

Quest様ありがとうございます
その通りです。

コードでガリガリとは
DetailBandを使わずに   データーを1個ずつQRLabelに展開していくのでしょうか?
なるほど、その発想転換は道が見えてきた様です、しかし初心者には遠い道のりです。

QRCompositeReport1というのはこの為の近道と思ってましたが。。。
もう少しここでQRCompositeReport1についてを待ってみて、情報なければその道にトライします。
ありがとうございました。

編集 削除
ぽむぽむ  2010-10-18 21:27:43  No: 39372  IP: 192.*.*.*

QRCompositeReportは使ったことがありませんが、TQuickRepを
QRCompositeReport.Reportsに追加することで、一つのプリントジョブで
複数の帳票を印刷できる機能のはずです。

なので、現状のデザインをそのまま使い、上に納品書、下に受領書を印刷
するのであれば、QRCompositeReport.Reportsに、
1ページ目のみ印刷できる納品書を追加
1ページ目のみ印刷できる受領書を追加
2ページ目のみ印刷できる納品書を追加
・・・

と、各ページ毎に帳票インスタンスを作成する必要があると思います。
また、印刷時も割り付け印刷で2ページを1枚で印刷するように指定する
必要もあるでしょう。

なので、Quest さんが提案された、
> 発想を変えて、A41ページの上半分に納品書、下半分に受領書をデザインして
が、一番楽にできると思います。

納品書も受領書も同一のDatasetを利用しているのであれば、納品書の
用紙をA4縦に変更し、DetailBandをぐ〜〜〜っと広げて、受領書の
DetailBandの中身を貼り付けてしまうだけでいいのではないでしょうか?

編集 削除
テクテク  2010-10-20 19:23:22  No: 39373  IP: 192.*.*.*

ほむほむ様ありがとうございます。
QRCompositeReport.Reportsについて、
1ページ目のみ印刷できる納品書を追加
1ページ目のみ印刷できる受領書を追加
2ページ目のみ印刷できる納品書を追加
・・・
は非常に参考になりました。これで解決しそうですが
個別の印刷では出来ているサマリーとページフッターがおかしな動きします。

>印刷時も割り付け印刷で2ページを1枚で印刷するように指定する
その割り付け印刷とは具体的にどのようにするのか
教えて頂けないでしょうか?

それと
>DetailBandをぐ〜〜〜っと広げて、
という事ですが  DetailBandにはQRDBTextが入っていて
行間の高さを指定していますが、これを広げる意味がわかりません。

ほんと初心者でお手間かけ申し訳ございません。
よろしくお願いします。

編集 削除
ぽむぽむ  2010-10-20 23:18:07  No: 39374  IP: 192.*.*.*

> その割り付け印刷とは具体的にどのようにするのか
用紙1枚に2ページ分、4ページ分とかを印刷する、プリンタドライバで
提供されるものなので、プリンタのダイアログ見てもらうしかないかと。

> という事ですが  DetailBandにはQRDBTextが入っていて
> 行間の高さを指定していますが、これを広げる意味がわかりません。
あぁ、そっか、1ページに複数行のデータがあって、それぞれの行が
DetailBandになっているのか。

であれば、DeteilBandを広げて、全部QRLabelに変更して、OnNeedDataを
使う方法に変更しないといけないと思います。
OnNewPageイベントあたりで、QRLabelに納品書と受領書データを流し込む
ことになるでしょう。
つまり、Questさん曰く「コードでガリガリ」ですね。
失礼しました。

編集 削除
テクテク  2010-10-21 19:38:00  No: 39375  IP: 192.*.*.*

QRCompositeReport.Reportsについて、
1ページ目のみ印刷できる納品書を追加
1ページ目のみ印刷できる受領書を追加
2ページ目のみ印刷できる納品書を追加
・・・
実際の枚数が多くても3ぺ−ジほどなので、上記で解決しました。
ぽむぽむ様ありがとうございました。

枚数が多い時はQuest様の「コードでガリガリ」かな。
Quest様ありがとうございました。

編集 削除