cancel
Showing results for 
Search instead for 
Did you mean: 

PrintToPrinter メソッドの印刷範囲について

Former Member
0 Kudos

Windowsアプリケーションにおいて、Crystal Reports で作成した帳票を、プログラムから PrintToPrinter で印刷する場合、

32767ページ以降が印刷されません。

プログラムミスをしているのか、設定が誤っているのか、調べてみましたが分かりませんでした。

ご教授いただけますようお願いします。

開発環境

Windows VISTA

Visual Studio2008 Professional Edition SP1

Crystal Reports Basic for Visual Studio 2008

C#

発生状況

1. データセットを定義し、「1~35,000」までの数字(integer)を入れたテーブルを作成する

2. Crystal Reports を作成し、データベースとして上記で作成したデータセットを定義する

3. レポートの「詳細」セクションに、列を貼り付け、「出力後に改ページ」にチェックする

4. 「ReportDocument」のインスタンスを生成し、LoadによりCrystal Reports ファイルを取り込む

5. 「SetDataSource」でデータセットをセットする

6. 「PrintToPrinter(1, false, 32767, 32769)」を実行する

上記の結果、32767ページのみしか印刷されません。

また「PrintToPrinter(1, false, 0, 0)」を実行した場合、32767ページまでしかプリンターにスプールされません。

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

32767 は、int の最大値です。ページ数は、int の最大値までしか対応できないのでしょう。

Former Member
0 Kudos

24x7様

ご返信頂きありがとうございます。

Int の最大値と考えてみたのですが、それは 16ビット での計算かと思います。

MSDNでも Integer は「-2,147,483,648 から 2,147,483,647 までの符号付き 32 ビット (4 バイト) の整数」と

されています。

[http://msdn.microsoft.com/ja-jp/library/06bkb8w2.aspx]

MSDNに気になる説明がありました。

プログラミングのヒント

 相互運用の考慮事項 オートメーション オブジェクトや COM オブジェクトなど、.NET Framework 向けに作成されていないコンポーネントを使用する場合、他の環境では整数型 (Integer) のデータ幅が異なる (16 ビット) ことに注意してください。

ひょっとして、Crystal Reports での Int は16 ビットなのでしょうか?

Edited by: tu_saito on Jan 21, 2010 12:58 AM

Edited by: tu_saito on Jan 21, 2010 12:58 AM

Former Member
0 Kudos

昔のバージョン 4.5 では、16 ビットと 32 ビットが存在していたから、その名残ではないですか。また、そんな大量のページ数を印刷することも想定外だったかもしれません。

Former Member
0 Kudos

24x7様

再びありがとうございます。

> 昔のバージョン 4.5 では、16 ビットと 32 ビットが存在していたから、その名残ではないですか。

う~ん。そうだとしますと大変残念でなりません。

今後の改修に期待したいと思います。

※当方も業務アプリケーションに使用するのに、「VSの付属にツールがあるから」との理由だけで

 採用してしまった経緯があります。判断に誤りがありました。

 今後は有償版、もしくは他のツールを使用するなどの検討を行いたいと思います。

Answers (0)