- PR -

クリスタルレポートの印刷方法について

投稿者投稿内容
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2003-07-08 14:48
こんにちは-
まったく資料がないため、クリスタルレポートの印刷で困っております。

Web画面の「印刷」ボタンをクリックし、プレビューで表示された帳票を印刷したいですが、
 ・プリンタはPCでプリンタの設定でしたもの
 ・PDFは使用しない
 ・言語はVB.NET
何をどうしたらいいのか分かりません。
みなさんのスレッドを見て「ReportDocumentのPrintToPromterを使えばいいのね」
と思ったのですが、どう使えばばいいのかよく分かりません
(Web画面のプレビュー表示はできます)

1.とりあえずフォームに「コンポーネント」の「ReportDocument」追加しました。

2.「ReportDocument」で検索をかけたところ参考になりそうなソースがあり
  次のようなソースを書いてみました。
Private Sub PrintReport()
Dim margins As PageMargins(→エラー:定義されていない)

' PageMargins 構造体を取得し、レポートの余白を設定します。
margins = Report.PrintOptions.PageMargins
(→エラー:PrintOptionはReportのメンバでない)
margins.bottomMargin = 350
margins.leftMargin = 350
margins.rightMargin = 350
margins.topMargin = 350
' ページ余白を適用します。
Report.PrintOptions.ApplyPageMargins(margins)
Report.PrintToPrinter(1, False, 0, 0)
End Sub
※「印刷」ボタン押下時点のイベントで上記のものを呼ぶ。

 エラーが出ているのも問題ですが、この方法でいいのかも
わからないので、別の方法があれば教えてください。
 宜しくお願いします。
bubunya
大ベテラン
会議室デビュー日: 2003/01/16
投稿数: 124
投稿日時: 2003-07-08 17:05
MSDN は見ましたか?
ms-help://MS.VSCC/MS.MSDNQTR.2003APR.1041/crystlmn/html/crtskprintingreportsfromtheserver.htm

あと、「クリスタルレポート」ではなく、「Crystal Reports」ですね。MSDN を「クリスタル」で検索しても何にも出てきません。
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2003-07-11 15:07
アドバイスありがとうございます。

前回、記述したものはMSDNも参考にしたものです。

エラーについてはなんとか解決いたしました。
原因は
1,名前空間をinportsしていなかったこと
2,Report.PrintToPrinter(1, False, 0, 0)
  ↓
 ReportDocument1.CreateReport.PrintToPrinter(1, False, 0, 0)

早速実行したところ、プリンタ名でエラーがでました。
エラー:「れたプリンタは無効です」
(単純にPrinterNameに通常のプリンタ名に設定した)

プリンタ名を指定する際、注意する点等がありましたら
アドバイスお願い致します。

みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2003-07-11 15:09
(前回の文章に不備がありましたのでもう一度)
アドバイスありがとうございます。

前回、記述したものはMSDNも参考にしたものです。

エラーについてはなんとか解決いたしました。
原因は
1,名前空間をinportsしていなかったこと
2,Report.PrintToPrinter(1, False, 0, 0)
  ↓
 ReportDocument1.CreateReport.PrintToPrinter(1, False, 0, 0)

早速実行したところ、プリンタ名でエラーがでました。
エラー:「指定されたプリンタは無効です」
(単純にPrinterNameに通常のプリンタ名に設定した)

プリンタ名を指定する際、注意する点等がありましたら
アドバイスお願い致します。

bubunya
大ベテラン
会議室デビュー日: 2003/01/16
投稿数: 124
投稿日時: 2003-07-12 23:04
プレビューが出来ているというのは、実際にプロジェクトをデバッグで実行して表示されているのですよね?

気になるのはReportDocument1.CreateReport.PrintToPtinerです。MSDNを読む限り、CreateReportはIcachedReportインターフェースのメソッドなので独自クラスの実装が必要ですが、しかし、質問を見ている限りそこまで行われていないかと思います。
自分で使ったことが無いので自信はありませんが、CreateReportは自分で呼び出すものではないような気がします。

で、役に立ちそうなものをちょっと探してみました。
http://support.crystaldecisions.com/communityCS/TechnicalPapers/crnet_web_app_printing.pdf
似たような例が日経BPの本にも出てた気がします。
基本的にはReportDocument.loadでレポートをロードしてPrintToPrinterです。

これでもうまくいかない場合はサポートに聞いたほうが良いかと思います。
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2003-08-04 19:17
bubunyaさん、ありがとうございます。

もう一度作り直したところ
↓↓ソース
margins = reportDocument1.PrintOptions.PageMargins
margins.bottomMargin = 350
margins.leftMargin = 350
margins.rightMargin = 350
margins.topMargin = 350
reportDocument1.PrintOptions.ApplyPageMargins(margins)
reportDocument1.Load("レポートのパス&ファイル名")
reportDocument1.PrintToPrinter(1, False, 0, 0)

としました。やはり、
ReportDocument1.CreateReport.PrintToPrinter(1, False, 0, 0)
はおかしいようです。
なぜ、前回はこのようなことになったのか不可解ですが。。。
とりあえず、ご指摘されたところは解決です。

返事送れたこと、大変失礼いたしました。
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2003-08-05 10:19
前のソースを実行したところ、
「通常のプリンタがない」とエラーがでました。

そこで、
reportDocument1.PrintOptions.PrinterName = "Canon LASER SHOT LBP-1710"
を加えてみました。すると
「指定されたプリンタは無効です。」とエラーがでました。

プリンタ名の書き方がいけないのか何なのか?
全く分からないです。

他のスレッドを見たところPDFがいいとかかれていましたが
PDFを使わず直接印刷を使いたいのですが???

使用言語:ASP.NET(VB.NET
プリンタ:Canon LASER SHOT LBP-1710
(プリンタサーバにつながれているもの)

宜しくお願い致します。
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2003-08-07 13:58
お疲れ様です。
一つ、分かったことがあります。

ローカルプリンタだと印刷されます。
ネットワークプリンタは、また別の設定が必要なようです。

同じことで悩まれている方がいたような気がしますので
ご報告いたした。
(気づくの遅いかも。。。。)

ネットワークプリンタについての記述は↓参考になると思います。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3583&forum=7


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