DOBON.NET DOBON.NETプログラミング掲示板過去ログ

CrystalReportViewerからページ指定印刷すると・・・

環境/言語:[VB.NET2003 Framework1.1SP1]
分類:[.NET]

いつもお世話になっております。
困っていることがあります。

VisualStudio.NET2003のVBで開発しています。
帳票は付属のCrystalReportsです。
プレビューをCrystalReportViewerで表示させています。
プリンタアイコンから印刷ダイアログを呼び出し、ページ指定(たとえば1ページのみ)します。
部数は何も触らず、初期値1のままです。
それでOKして印刷すると、勝手に2部印刷されます。
なぜですか?
そんなプログラムはもちろん書いてません。
しかも、部数を入力しなおすと(部数に1を上書き)ちゃんと1部だけ印刷されます。
これってバグじゃないでしょうか。
こういった経験した方いらっしゃいませんか。

あと判っていることは、開発環境がインストールされているマシンで、作成したアプリケーションを動かしてみると正しく印刷されます。
が、開発環境のインストールされていないマシンで、セットアップディスクから作成したアプリケーションをインストールして実行すると現象が起きます。
マージモジュールの問題なのでしょうか?

解決された方、その方法、知ってる方がいらっしゃいましたら教えていただきたいと思います。
2005/03/04(Fri) 14:19:30 編集(投稿者)

こんにちは、じゃんぬねっと です。

ちなみに、CrystalReports は現在 SP2 まで出ていますが、
パッチは当てていらっしゃるのでしょうか?
早速お返事ありがとうございます。
パッチってどこで入手できるんでしょうか?
探してるんですが、よく判りません。
BusinessObjectsのサイト見てもちんぷんかんぷんです。
さしつかえなければ入手先教えていただけますか?
あと、パッチが当たってるかの確認の仕方ってどこで見るんでしょう?
質問ばっかりですみません。
調べ方がへたでお世話かけますが、ご協力いただければ幸いです。
2005/03/04(Fri) 14:19:59 編集(投稿者)

こんにちは、じゃんぬねっと です。

■No8967に返信(フリーム・ジェライトさんの記事)
> BusinessObjectsのサイト見てもちんぷんかんぷんです。
> さしつかえなければ入手先教えていただけますか?
Customer Support でどうぞ。
http://support.businessobjects.com/fix/hot/si75/
じゃんぬねっと さん、こんにちは。
お返事ありがとうございます。遅くなりました。

早速そのサイトへいってダウンロードします。
結果はまたご報告させていただきます。
結果から言うとダメでした。

SP2はインストールしたのですが、それが摘要されているかの確認の仕方が判りません。
.NETのバージョン情報には何も出てきませんし。

SP1も当てないといけないんでしょうか?
でもSP1は.NET用で、.NET2003はSP2しかありませんでした。
それにだいたいSP2にはSP1は含まれているものですよね。知りませんけど。

インストールするだけじゃダメなのでしょうか。
何か設定しないといけない?
あ〜もう〜〜、判りませんっ!
フリーム・ジェライトさん、こんにちは。

ひとつ質問してもよろしいでしょうか?
開発マシンとインストール先マシンに接続されているプリンタは同じでしょうか?
プリンタによって、余白位置などが微妙に違うので、もしかしたら、それが原因かもしれません。
そうですねぇ。他に考えられる事といえば、インストール先のプリンタのドライバが悪い...なんて事もあるかな...

他には、おそらく無いと思いますが、直接印刷するコーディングが入っている...
で、Releaseコンパイルで...要するに、Debugif がアベコベになっている...なんて事は無いか...
ぺがらぼさん、お返事ありがとうございます。

プリンタは同じです。
ただ、プリンタが違うマシン(別ネットワーク)でも同じ現象が起きます。

あ、でもDebugとReleaseとでそんな違い出てくるのでしょうか。
現在実はDebugの方なので、Releaseでやってみます。
本来Releaseでやるものなんですよね、失礼いたしました。
■No8983に返信(フリーム・ジェライトさんの記事)

> プリンタは同じです。
> ただ、プリンタが違うマシン(別ネットワーク)でも同じ現象が起きます。
では、デザイナを開いて、プリンタの設定をよく確認してみてください。

> あ、でもDebugとReleaseとでそんな違い出てくるのでしょうか。
> 現在実はDebugの方なので、Releaseでやってみます。
> 本来Releaseでやるものなんですよね、失礼いたしました。
あ、ごめんなさい、まぁ、確かに、Releaseコンパイルもそうでしょうが、
ソースの中に、「#If DEBUG Then」があって、この施しがアベコベでは?
と言いたかったのです。
ただ、Debugコンパイルでインストーラを作っている所を見ると、そうではなさそうですが...
調査いただいてる皆様、大変申し訳ございません。
とてつもなく嘘をついておりました。
開発環境でも同現象でます。
確認漏れ?でした。

ぺがらぼさん、こんにちは。
DebugでもReleaseでも何ら変わりませんでした。
プリンタの設定、確認してみます。
2005/03/04(Fri) 14:20:29 編集(投稿者)

こんにちは、じゃんぬねっと です。

■No8986に返信(フリーム・ジェライトさんの記事)
> 調査いただいてる皆様、大変申し訳ございません。
> とてつもなく嘘をついておりました。
> 開発環境でも同現象でます。

ますます、わからないですね。
私は、パッチを当ててない人間ですが、(人に薦めておきながら...w)
何度やっても、このような現象は起きませんでした。
こんなバグがあるとすると、修正版のリリース ノートには確実で載るでしょうし。
どうも、CR のバグとは言いがたいような気がします。

> プリンタの設定、確認してみます。

プリンタのドライバ依存も、あまり考えられないかな。
ホントに CR のみの機能で印刷が実装されているか、再度確認して頂けませんか?
じゃんぬねっと さん、レスありがとうございます。

やり方としましては、プレビュー表示するかそのまま印刷するかをフォームで選択させ、プレビューの場合はCrystalReportViewerにデータを渡してます。
そのまま印刷する場合はPrintToPrinterを実行してます。
ビューワは別フォームで、そのフォーム内で印刷処理を行うようなプログラムは書いてません。ビューワにすべて任せてます。
あ、閉じるボタンを押下した場合のイベントだけ書いてます。もちろん印刷とは無縁です。

ぺがらぼ さんがおっしゃったような「#If DEBUG Then」とかいうのは書いてませんでした。
一応プロジェクト全体を検索したのですが、ヒットしなかったので。書いた覚えもありません。

あと言い忘れていたこととしては、VB6.0がインストールされています。それからSeagateのときのCrystalReportsが入ってました。
あんまり関係ないですかね。
OSはWin2000ProSP4です。今更ですみません。

パッチの問題ではないということですね。
ホント、ますます判りません。
最悪、ソースで制御しないといけないとかいうオチは嫌なんですけどね〜。
引き続き、調査します。
2005/03/04(Fri) 14:21:02 編集(投稿者)

こんにちは、じゃんぬねっと です。

■No8995に返信(フリーム・ジェライトさんの記事)
> ビューワは別フォームで、そのフォーム内で印刷処理を行うようなプログラムは書いてません。
> ビューワにすべて任せてます。

確認して下さってありがとうございます。
となると、コーディングによるミスは考え難いですね。

> あと言い忘れていたこととしては、VB6.0がインストールされています。
> それからSeagateのときのCrystalReportsが入ってました。
> あんまり関係ないですかね。
> OSはWin2000ProSP4です。今更ですみません。

おお、私と全く同じ環境ですね。(^-^;)

> パッチの問題ではないということですね。
> ホント、ますます判りません。
> 最悪、ソースで制御しないといけないとかいうオチは嫌なんですけどね〜。
> 引き続き、調査します。

確かに 2 部なんですよね? (ページ番号はどちらも「1」)
単純に、テーブル間の結合ミスで、データが2倍に膨れ上がってるとも考えられないですよね。
(それだったら、ページ番号は 1, 2 になっちゃうか)

 ・プリンタ替えてもダメ → プリンタ依存ではない
 ・CrystalReprotsViewer の機能のみで印刷している → コーディングミスではない
 ・CR のサポートセンタに報告がない → 多分、そのようなバグはない

うーん...。

このままでは埒が飽きませんね。
新しいプロジェクトで、簡単な構成にして、テストして頂けませんか?
もちろん、出力するデータもテーブル 1 本にしてください。

# 印刷プレビューを表示するだけならば 30 〜 60 分もあれば実装できるハズ...
# 面倒でも、解決の近道にはなりそうです。
じゃんぬねっと さん、こんにちは。

> ■No8995に返信(フリーム・ジェライトさんの記事)
> おお、私と全く同じ環境ですね。(^-^;)
それはまた面白いですね。偶然ってすごい。

> 確かに 2 部なんですよね? (ページ番号はどちらも「1」)
> 単純に、テーブル間の結合ミスで、データが2倍に膨れ上がってるとも考えられないですよね。
> (それだったら、ページ番号は 1, 2 になっちゃうか)
大丈夫です。
さらに判ったことがあります。
プレビューを表示して初めてページ指定印刷すると現象が出るのですが、その後画面を閉じないで再度ページ指定印刷すると問題なく出力されるのです。
謎です。
謎が謎を呼んでいます。

それを確認しているときに気づいたことをまた報告したいと思います。
なんと、CrystalReportsのパッチ類(マージモジュールやSP2)を当てていない環境では問題なく動いたのです!
さらに、さらに、さらに判らなくなりました。
SP2を疑ってしまいそうです。
なぜならさきほど、嘘ついてました、と言いましたが、そのあとにSP2をあてて開発環境でも現象が起こるようになったからです。
じゃんぬねっと さんはSPあたってないんですよね。ますます怪しい・・・。

> このままでは埒が飽きませんね。
> 新しいプロジェクトで、簡単な構成にして、テストして頂けませんか?
> もちろん、出力するデータもテーブル 1 本にしてください。
>
> # 印刷プレビューを表示するだけならば 30 〜 60 分もあれば実装できるハズ...
> # 面倒でも、解決の近道にはなりそうです。
頑張って試してみます。
これでダメならSP2消してみます。消せるのかどうか知りませんが・・・。
2005/03/04(Fri) 14:21:28 編集(投稿者)

こんにちは、じゃんぬねっと です。

■No8999に返信(フリーム・ジェライトさんの記事)
> それを確認しているときに気づいたことをまた報告したいと思います。
> なんと、CrystalReportsのパッチ類(マージモジュールやSP2)を
> 当てていない環境では問題なく動いたのです!
> SP2を疑ってしまいそうです。

ええ、疑ってください。(--A)
なぜならば、私も今 SP2 を当てたところ、この現象が起きるようになったからです... orz

> プレビューを表示して初めてページ指定印刷すると現象が出るのですが、
> その後画面を閉じないで再度ページ指定印刷すると問題なく出力されるのです。

こちらも全く同じです。

> 謎です。
> 謎が謎を呼んでいます。

これから、別の端末でもテストしてみます。

> これでダメならSP2消してみます。消せるのかどうか知りませんが・・・。

消せないと思います...
まとめて、削除して再インストールですね... (私も orz)

# 何もとってありませんでしたから...
ちゃんとインストール時にアーカイブしておけば戻せます。
SP2なXPなら別のメディアでインストールってことになりますね。

それより、本当に"バグ"と思うならベンダーに掛け合ってみましょう。
じゃんぬねっと さん、中 博俊 さん。
お返事ありがとうございます。

じゃんぬねっと さんへ。
ただいま別のことに終われていて手が離せなくなってしまいました。
またすぐ戻ってきますゆえ、お願いしてもよろしいでしょうか。

しかしSP2怪しいですね。
ただSP2を入れなくても、実行環境(CRのインストールされていない環境)で動かすと同じ現象になるので、その辺からしてバグなんでしょうか?
仕様って言われたらどうしよう・・・。
2005/03/04(Fri) 14:21:55 編集(投稿者)

こんにちは、じゃんぬねっと です。

■No9004に返信(フリーム・ジェライトさんの記事)
> ただいま別のことに終われていて手が離せなくなってしまいました。
> またすぐ戻ってきますゆえ、お願いしてもよろしいでしょうか。

もちろんです。
お仕事を優先してください。

> 仕様って言われたらどうしよう・・・。

どちらにしても、今のままではまずいでしょうね。
とりあえず、私は ShowPrintButton = false; とし、
自前の印刷ボタンを付加し、(イメージはそのまま強奪)
自前のダイアログで、自前に PrintToPrinter するように対応しました。
お返事遅くなりました。

■No9005に返信(じゃんぬねっとさんの記事)
> どちらにしても、今のままではまずいでしょうね。
> とりあえず、私は ShowPrintButton = false; とし、
> 自前の印刷ボタンを付加し、(イメージはそのまま強奪)
> 自前のダイアログで、自前に PrintToPrinter するように対応しました。
やっぱりそれしかないですね〜。
とりあえず自分で制御するように変更します。
お世話になっております。

プログラムで制御することで対応しました。
ひとまず解決とさせていただきます。
ベンダから何かあるかどうかは調べておきます。

ぺがらぼ さん、じゃんぬねっと さん、中 博俊 さん。
他、この件でいろいろご検討・調査くださいましたすべての皆様にお礼申し上げます。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板