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