- - PR -
Crystal Reportsを印刷ダイアログを介して印刷
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-03-18 22:36
皆様はじめまして。
現在VB.NETでのプログラム開発を行っているのですが、CrystalReportsから印刷が上手くいかず困っています。 ReportDocumentクラスのPrintToPrinterメソッドを実行すると、「通常使うプリンタ」から印刷されてしまうのが好ましくないので、印刷ダイアログを表示し、そこでプリンタの設定等を行い、その設定値をReportDocumentクラスに反映して印刷(PrintToPrinterメソッド)を行いたいと思っております。 その際、ReportDocumentクラスで設定した用紙サイズと用紙向きをデフォルト値としてPrinterSettingsクラスへ渡したいのですが、上手くいきません。 ※その他にも、印刷ダイアログのプリンタプロパティで縮小印刷の設定をし印刷したいのですが、上手くいきません。 ご存知の方いらっしゃいましたら、お返事ください。 ぜひ皆様のお力をお借りしたく投稿いたしました。 どうかご教授くださいますよう、宜しくお願い致します。m(_ _)m 開発環境は、以下のとおりです。 ・Win2000 Pro SP3 ・VB.NET2003(Enterprise Architect) ・Crystal Reports for VS.NET 2003 ・.NET Framework1.1 _________________ |
|
投稿日時: 2004-03-19 10:06
PrinterSettings.Papersizes←ReportDocument.PrintOptions.PaperSize
PrinterSettings.LandscapeAngle←ReportDocument.PrintOptions.PaperOrientation ですか。おそらく2つを単純に「代入」することはできないでしょうから、Select Case文で分けるか、 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8868&forum=7 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=7807&forum=7 このあたりのスレッドに出てくる「タイプコンバータ」を使えないでしょうか? 「うまくいかない」…この場合、「ソースの書き方がわからない」「コンパイルが通らないが、エラーの意味がわからない」「コンパイルは通るが実行時にエラーが出て、エラーをどう直せばよいかわからない」「コンパイルは通り、実行時エラーも出ないが、期待したようにはならない」の4つが考えられます。それで最初の「ソースの書き方がわからない」と判断しましたが、よろしかったでしょうか? |
|
投稿日時: 2004-03-19 10:54
Jittaさま、お返事ありがとうございます。
Jittaさまがおっしゃっている「タイプコンバータ」を行っているつもりなのですが、 期待しているような動きが見られません… 実際のソース(抜粋)を以下に記します。(ちょっと長いですが…) 要するに、CrystalReportViewerコントロール上の印刷ボタンをクリックしたときの 動作をこのコントロールを使わずに実現したいのです。 何度も申し訳ありませんが、ご教授くださいますよう、よろしくお願い致します。 Private m_htbPageMaping As New Hashtable Private m_htbPageMaping01 As New Hashtable Public Sub New() PageMaping() End Sub Private Sub PageMaping() ' ' .NetとCrystalReportの対応関係 ' m_htbPageMaping.Add("A3", CrystalDecisions.Shared.PaperSize.PaperA3) m_htbPageMaping.Add("A4", CrystalDecisions.Shared.PaperSize.PaperA4) : : : ' ' .NetとCrystalReportの対応関係の逆関係 ' m_htbPageMaping01.Add("PaperA3", PaperKind.A3) m_htbPageMaping01.Add("PaperA4", PaperKind.A4) : : : End Sub Private Function ConvDotNetToCrystalReport(ByVal i_pageName As String) As CrystalDecisions.Shared.PaperSize If m_htbPageMaping.Contains(i_pageName) Then Return CType(m_htbPageMaping(i_pageName), CrystalDecisions.Shared.PaperSize) End If Return CrystalDecisions.Shared.PaperSize.DefaultPaperSize End Function Private Function ConvCrystalToDotNet(ByVal i_pageName As String) As PaperKind If m_htbPageMaping01.Contains(i_pageName) Then Return CType(m_htbPageMaping01(i_pageName), PaperKind) End If Return PaperKind.Custom End Function Public Sub SetupAndPrint(ByVal i_RepDoc As ReportDocument) Dim PrntDialog As New System.Windows.Forms.PrintDialog PrntDialog.PrintToFile = False PrntDialog.ShowNetwork = True PrntDialog.AllowPrintToFile = False PrntDialog.AllowSomePages = False PrntDialog.AllowSelection = False PrntDialog.Document = New PrintDocument '--------------------------------------------------- ' ReportDocumentの情報をダイアログに反映する '--------------------------------------------------- PrntDialog.PrinterSettings.DefaultPageSettings.PaperSize = PrntDialog.PrinterSettings.PaperSizes(Me.ConvCrystalToDotNet(i_RepDoc.PrintOptions.PaperSize.ToString)) If i_RepDoc.PrintOptions.PaperOrientation = PaperOrientation.Landscape Then PrntDialog.PrinterSettings.DefaultPageSettings.Landscape = True ElseIf i_RepDoc.PrintOptions.PaperOrientation = PaperOrientation.Portrait Then PrntDialog.PrinterSettings.DefaultPageSettings.Landscape = False End If Dim ret As System.Windows.Forms.DialogResult ret = PrntDialog.ShowDialog ' ' 渡したPrintDocument型(PrintDocumentから継承したクラス)、実際に出力する ' If ret = Windows.Forms.DialogResult.OK Then '----------------------------------------------------------- ' PrintDialogからの設定情報をReportDocumentに反映する '----------------------------------------------------------- i_RepDoc.PrintOptions.PaperSize = _ ConvDotNetToCrystalReport(PrntDialog.PrinterSettings.DefaultPageSettings.PaperSize.Kind.ToString) i_RepDoc.PrintOptions.PaperOrientation = _ CType(IIf(PrntDialog.PrinterSettings.DefaultPageSettings.Landscape, _ CrystalDecisions.Shared.PaperOrientation.Landscape, _ CrystalDecisions.Shared.PaperOrientation.Portrait), _ CrystalDecisions.Shared.PaperOrientation) i_RepDoc.PrintOptions.PrinterName = PrntDialog.PrinterSettings.PrinterName Dim l_copys As Short = PrntDialog.PrinterSettings.Copies '----------------------------------------------- ' 全ての頁を印刷する '----------------------------------------------- i_RepDoc.PrintToPrinter(l_copys, False, 0, 0) End If End Sub _________________ |
1