SAP Knowledge Base Article - Public

1583572 - クラス ReportDocument.PrintOptions へのアクセス時のメモリリーク

Symptom

.NET アプリケーションからクラス Reportdocument.PrintOptions にアクセスするためのループで、以下のエラーメッセージが表示されます。

メモリ不足のため、操作を実行できません。
System.Runtime.InteropServices.COMException (0x80041004): メモリ不足のため、操作を実行できません。
場所 CrystalDecisions.ReportAppServer.Controllers.PrintOutputController Class.ModifyPrintOptions(PrintOptions newVal)
場所 CrystalDecisions.CrystalReports.Engine.PrintOptions.set_Dissociate PageSizeAndPrinterPaperSize(Boolean value)
場所 CrystalDecisions.CrystalReports.Engine.PrintOptions.Copy(PrintOptions src)
場所 CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)
場所 CrystalDecisions.CrystalReports.Engine.ReportClass.Load(String reportName, OpenReportMethod openMethod, Int16 parentJob)
場所 CrystalDecisions.CrystalReports.Engine.ReportDocument.EnsureLoadReport()
場所 CrystalDecisions.CrystalReports.Engine.ReportDocument.get_SummaryInfo()
場所 SPC001.SMKS_SPC001.DoPrintSTL00301(String strBodyXML, ReportHead & reportHead)

Environment

  • Crystal Reports 2008 V1
  • Visual Studio 2005/2008

Reproducing the Issue

Visual Basic.NET アプリケーションに、クラス ReportDocument.PrintOptions にアクセスするためのループが含まれており、印刷ジョブ 16381 の後にエラーが発生します。

例:

reportObj.PrintOptions.PrinterDuplex = CrystalDecisions.Shared.PrinterDuplex.Vertical

reportObj.PrintOptions.PrinterName = "<プリンタ名>"

reportObj.SummaryInfo.ReportTitle = "<レポートタイトル>"

reportObj.SetDataSource(ds)

reportObj.PrintToPrinter(1, False, 0, 0)

Cause

この問題は、問題報告番号 ADAPT01540713 として登録されています。

?

Resolution

この問題は、FixPack 3.7 で修正される予定です。

回避方法: クラス ReportDocument.PrintOptions のプログラムコードを RAS SDK に変換します。

例:

Imports CrystalDecisions.ReportAppServer.ClientDoc

Imports CrystalDecisions.ReportAppServer.DataDefModel

Imports CrystalDecisions.ReportAppServer.Controllers

Imports CrystalDecisions.ReportAppServer.ReportDefModel?

Dim rcd As CrystalDecisions.ReportAppServer.ClientDoc.ISCDReportClientDocument

Dim prnOpts As CrystalDecisions.ReportAppServer.ReportDefModel.PrintOptions

rcd = rpt.ReportClientDocument

prnOpts = rcd.PrintOutputController.GetPrintOptions()

prnOpts.PrinterDuplex = CrystalDecisions.ReportAppServer.ReportDefModel.CrPrinterDuplexEnum.crPrinterDuplexVertical

prnOpts.PrinterName = "<プリンタ名>"

rcd.PrintOutputController.ModifyPrintOptions(prnOpts)

Keywords

memory leak, PrintOptions, .net, Windows, application, RAS, メモリリーク, アプリケーション, Report Application Server , KBA , BI-DEV-NET , BI Software Development Kits (SDKs) - .NET or Other , Problem

Product

Crystal Reports 2008 V1