cancel
Showing results for 
Search instead for 
Did you mean: 

Crystal Reports RDCでプレビュー表示せずに印刷することができない。

Former Member
0 Kudos

WindowsXPからVISTAへ開発環境の移行を行っております。

XP環境

VB6.0SP5

Spread3.0J

InputMan6.5J

CrystalReports8.5

VISTA環境

VB6.0SP6

Spread7.0J

InputMan7.0J

CrystalReportsXI R2 SP4

Spread、InputManについては移行ツールを使用してVBのプロジェクトファイルを

移行する事が出来ました。CrystalReportsについては移行ツールがないため、手作業

でレポートファイル(.rpt)をVBプロジェクトへ取り込み、レポートビューアで表示

することができました。レポートビューアの印刷ボタンをクリックすると印刷ができ

るのですが、ビューアを表示せずに直接印刷する事が出来ません。

PrintOutメソッドを使用すれば良いとのことでやってみましたが、「オブジェクトは、

このプロパティまたはメソッドをサポートしていません。」のエラーメッセージが表示

されてしまいます。

フォームに依存しない印刷方法についてどなたかご教授下さい。よろしくお願いいたします。

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

初歩的な確認ですが、移行する前に VB プロジェクトで直接印刷 (PrintOut メソッド) は動作していたのでしょうか。

Former Member
0 Kudos

24x7 様

ご回答ありがとうございます。

移行前はフォームにクリスタルレポートのオブジェクトを貼り付けてそのオブジェクト名を

例えば、CRR_GAS010 として以下の様に印刷しておりました。

**ここから*************************************

'レポートファイル設定

CRR_GAS010.ReportFileName = P_MYPATH & "\" & C_CR_GAS010  'C_CR_GAS010は定数

'年月の出力

CRR_GAS010.Formulas(0) = "PRT_YM=""" & Left$(W_YM, 4) & "年" & Right$(W_YM, 2) & "月"""

'クリスタルレポート起動

CRR_GAS010.Destination = 1  '* 0 = To Window, 1 = To Printer, 2 = To File

 CRR_GAS010.Action = 1  '* 出力

**ここまで*************************************

PrintOut メソッドは.Action にあたる部分のものとおもわれるのですが、直接このメソッドを使用

してはいません。

移行後はフォームに貼り付けていたクリスタルレポートのオブジェクトは不要になったと思い

削除し、コードをRDC用に書き換える必要があると思いヘルプを参照して以下のコードをため

してみましたが無理でした。

CRViewer1.ReportSource = Report

'PDF印刷モードの場合はPrintModeプロパティを0に設定し、ActiveX印刷モードの場合は1に設定

CRViewer1.PrintMode = 0

CRViewer1.PrintReport

以上です。アドバイスよろしくお願いいたします。

Former Member
0 Kudos

OCX(Crystl32.OCX) から RDC へ変換しているアプリケーションなんですね。

プレビュー表示なしなら、以下のコードは不要です。

> CRViewer1.ReportSource = Report

> 'PDF印刷モードの場合はPrintModeプロパティを0に設定し、ActiveX印刷モードの場合は1に設定

> CRViewer1.PrintMode = 0

> CRViewer1.PrintReport

Report オブジェクトの PrintOut メソッドを利用してみてください。

(例) Report.PrintOut

Former Member
0 Kudos

24x7 様

ご回答ありがとうございます。解決することができました。

プレビュー表示用のサンプルコードを元にPrintOutメソッドを使用していたせいで

今までうまく出来ておりませんでした。

対象のオブジェクト 例えば、RDC001 を宣言

*********************************************

Dim Report As New RDC001

フォーム上の印刷ボタン押下時の処理として

*********************************************

Report.PrintOut

'確認画面表示、非表示設定をする場合以下

'Report.PrintOut False, 1, ,1,1

以上で印刷することが出来ました。ありがとうございました。

ついでにご回答いただければありがたいのですが、移行前のコードで記載している以下のコード

'年月の出力

CRR_GAS010.Formulas(0) = "PRT_YM=""" & Left$(W_YM, 4) & "年" & Right$(W_YM, 2) & "月"""

これを実現するにはどのようにすればよいのでしょうか。

Former Member
0 Kudos

Dim i As Integer

Dim CrFormulaFields As CRAXDRT.FormulaFieldDefinitions

Dim CrFormulaField As CRAXDRT.FormulaFieldDefinition

For i = 1 To Report1.FormulaFields.Count

Set CrFormulaField = Report1.FormulaFields.Item(I)

If CrFormulaField.FormulaFieldName = "式フィールド名" Then

CrFormulaField.Text = "WhilePrintingRecords;" + Chr(13) + Chr(10)

CrFormulaField.Text = CrFormulaField.Text + "PRT_YM=""" & Left$(W_YM, 4) & "年" & Right$(W_YM, 2) & "月"""

End If

Next I

動作確認していませんが、こんな感じで記述します。

Former Member
0 Kudos

24x7 様

ご回答ありがとうございます。解決することができました。

最終的には以下で解決できました。見えにくいですがCrFormulaField.Textの値を'(上カンマ)で囲む必要があるようです。あと"PRT_YM="は記述する必要がありませんでした。

For i = 1 To Report.FormulaFields.Count

Set CrFormulaField = Report.FormulaFields.Item(i)

If CrFormulaField.FormulaFieldName = "PRT_YM" Then

CrFormulaField.Text = "WhilePrintingRecords;" + Chr(13) + Chr(10)

CrFormulaField.Text = CrFormulaField.Text + "'" & Left$(W_YM, 4) & "年" & Right$(W_YM, 2) & "月'"

End If

Next i

以上です。大変たすかりました。ありがとうございました。

また機会がありましたらよろしくお願いいたします。

Answers (0)