- PR -

ActiveReportで、複数種類の帳票の印刷

投稿者投稿内容
nishi
会議室デビュー日: 2005/10/08
投稿数: 4
投稿日時: 2005-10-08 22:32
ActiveReport .Net の質問です。

請求書などの出力時、「請求書」と「請求書(控)」をセットで出力したいのです。
請求書は請求先ごとに出力されるため、
@請求先Aの請求書
A請求先Aの請求書(控)
B請求先Bの請求書
C請求先Bの請求書(控)
という順番で印刷したいのですが、どのようにすればいいのかわからず困っています。

現在は、
rpt1.Document.Pages.Add(rpt2.Document.Pages(i))
と言うように記述していますが、そうすると
@請求先Aの請求書
A請求先Bの請求書
B請求先Aの請求書(控)
C請求先Bの請求書(控)
と印刷されてしまいます。

どなたかご存知の方は、教えていただけないでしょうか。
_________________
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-10-10 15:04
こんにちは、じゃんぬ です。

引用:

nishiさんの書き込み (2005-10-08 22:32) より:

請求書などの出力時、「請求書」と「請求書(控)」をセットで出力したいのです。
請求書は請求先ごとに出力されるため、
@請求先Aの請求書
A請求先Aの請求書(控)
B請求先Bの請求書
C請求先Bの請求書(控)
という順番で印刷したいのですが、どのようにすればいいのかわからず困っています。


まず、どういう構成になっているのか教えてください。
控と控えじゃない請求書は分かれていますか?
同じであれば、動的に表示を変えられてますか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
nishi
会議室デビュー日: 2005/10/08
投稿数: 4
投稿日時: 2005-10-10 15:20
返信ありがとうございます。

現在は、
Dim rpt1 As New rptChumonsho '請求書
Dim rpt2 As New rptChumonsho '請求書(控)

rpt1.Run(False) '請求書
rpt2.Run(False) '請求書(控)

For i = 0 To rpt2.Document.Pages.Count - 1
   rpt1.Document.Pages.Add(rpt2.Document.Pages(i))
Next

という具合に記述しています。
すると、請求書がすべて出力された後に控がまとめて出力されてしまいます。
請求書は請求先によりページ数が異なるので、
単純に1ページおきに「Pages.Insert(...)」とするわけにもいかないのです。
(改ページの記述はRPT側で行っています)

ただ帳票フォーマットはほぼ同じなので、RPT側で表示を切り替えることは可能です。
aacute
常連さん
会議室デビュー日: 2005/08/25
投稿数: 30
投稿日時: 2005-10-10 17:38
請求書レポート(rpt1)の中に複数の請求先が含まれるということですか。
それなら、単純に請求書控えを追加すれば最後に出力されるのは当然ですね。

一番簡単なのは、請求先ごとに請求書のDocumentを作るという方法だと思います。
ActiveReportのDataSourceプロパティを使ってデータを分ければ可能なのでは。
nishi
会議室デビュー日: 2005/10/08
投稿数: 4
投稿日時: 2005-10-10 21:07
請求先ごとにDocumentを作成していき、
最後に順番にPages.Addしていけばいいと言うことでしょうか。

一度その方法で試してみます。

ありがとうございます。
イチタカ
会議室デビュー日: 2005/10/10
投稿数: 7
投稿日時: 2005-10-10 21:53
現役はなれて久しい人間が横からすいません。

抜粋されたソースを見ると、rpt1にaddされてらっしゃいますね。
すいません。本当にマニュアル読んでないので、憶測ですが、Addって普通はデータの最後に追加するためのメソッドですよね?(違っていたら大変申し訳ありません)

rpt1をNewした段階ですでにデータソースなり、SQLなりで請求先分の帳票イメージ(と呼べば御幣がないのでしょうか)が生成されているなら、いくらAddしても控えは最後にきてしまうと思います。

ドキュメントを読まずに物言ってしまって本当に申し訳ないのですが、指定ページにインサートするようなメソッドが提供されていないのでしょうか?

代案として。

昔の話ですが、このような機能を実装するとき、私はデータの取得処理が二度手間だなぁと思ったので、同じレイアウトを使用して、タイトルを入れ替えて個別に印刷する手法をとっていました。

昔のActiveReportには項目の表示、非表示を弄れたので、タイトルの部分だけ、
「○○株式会社 請求書」
「○○株式会社 請求書(控)」
タイトルを入れ替えて実装していました。(会社名はSQLで引っ張れるし、請求書は固定リテラルでよかったので)

……エレガントじゃないですね。すいません。
nishi
会議室デビュー日: 2005/10/08
投稿数: 4
投稿日時: 2005-10-10 22:07
おっしゃる通り、Pages.Addは最後に追加されます。
Pages.Insertだと任意のページに挿入ができるのですが
挿入するページを判断することが難しいので諦めました。

また、通常は請求書と請求書(控)のセットなのですが
特定の請求先に対しては明細書も印刷する必要がありますので、
請求先ごとに必要なドキュメントを作成(NEW)していく方法で
試しているところです。

イチタカ
会議室デビュー日: 2005/10/10
投稿数: 7
投稿日時: 2005-10-10 22:29
お疲れ様ですnishi様

引用
>また、通常は請求書と請求書(控)のセットなのですが
>特定の請求先に対しては明細書も印刷する必要がありますので、
>請求先ごとに必要なドキュメントを作成(NEW)していく方法で
>試しているところです。

私もInsertは面倒に思えて諦めたクチです(汗)

明細ということでしたら、今のActiveReportにあるのかどうかはっきり言えないのですが、ヘッダ部、明細部(確かDetailプロパティだったと思います)、フッタ部とレポートを編集できるので、明細出力フラグにしたがって、Detailの表示をON/OFFしてやれば、いいのでは?とか思ったりします。

(データ構造を勝手に決め付けていますが、ただの憶測です)

プロパティに非表示設定がなければ見当はずれで申し訳ないのですが。

スキルアップ/キャリアアップ(JOB@IT)