[英]Correct way to export batches of XML to PDF using Crystal Reports?
我有以下 function 在循环内运行,在指定目录中的每个 xml 文件上:
Public Function createReport(ByVal rptName As String, ByVal pdfName As String, ByVal xmlInput As String) As String
Dim ds As New DataSet
Dim cr As New ReportDocument
Dim CRfile As String = crystalFilePath & rptName & "Template.rpt"
ds.ReadXml(xmlInput)
cr.FileName = CRfile
cr.DataSourceConnections.Clear()
cr.SetDataSource(ds)
cr.Refresh()
cr.VerifyDatabase()
Dim pdfPath As String = outputDirectory & rptName & "\pdf\" & pdfName & ".pdf"
Try
cr.ExportToDisk(ExportFormatType.PortableDocFormat, pdfPath)
Catch ex As Exception
If Not ex.InnerException Is Nothing Then
Return pdfName & "<br /> <strong>Error:</strong> " & ex.InnerException.ToString
Else
Return pdfName & "<br /> <strong>Error:</strong> Unknown error (no inner exception text)"
End If
End Try
cr.Close()
cr.Dispose()
GC.Collect()
Return "Success"
End Function
有时我会遇到错误
已达到系统管理员配置的最大报表处理作业限制
我怀疑我在每次迭代中都没有正确处理 memory?
此错误旨在帮助开发人员和用户了解他们何时将高报告负载置于运行报告的服务器上。 我建议阅读这篇博文,了解如何解决您的错误的一些想法。
默认情况下,限制为 75 个报告打印作业。 请记住,放置在主报告中的子报告计入此限制。 因此,单次打印具有 4 个子报表的报表将计为 5 次打印。 有一个注册表编辑可用于增加此限制,但如果您增加限制,运行报告的机器可能会遇到性能问题。 在过去,我遇到过 memory 错误,这是由于对运行报告的机器设置过高的限制直接导致的。
此博客还讨论了一些编码实践,您可以遵循这些实践来清理对象和临时文件,以帮助您解决问题。 我建议在尝试注册表编辑解决方案之前先用尽所有编码实践。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.