on 01-14-2010 4:30 AM
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ページまでしかプリンターにスプールされません。
32767 は、int の最大値です。ページ数は、int の最大値までしか対応できないのでしょう。
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
User | Count |
---|---|
85 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.