首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Crystal Reports异常:已达到系统管理员配置的最大报表处理作业限制

Crystal Reports异常:已达到系统管理员配置的最大报表处理作业限制
EN

Stack Overflow用户
提问于 2012-03-06 16:04:33
回答 12查看 75.4K关注 0票数 13

我正面临着一个非常错误的问题,在ASP.NET应用程序中,在多次查看相同的报告后,同时我得到了这样的异常:

已达到系统管理员配置的最大报告处理作业限制。

等等,我知道有很多解决方案,但它们都不适合我。

  1. 我把ReportDocument.Close();ReportDocument.Dispose();放在CrystalReportViewer_Unload事件中,仍然抛出异常。

Private Sub CrystalReportViewer1_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles CrystalReportViewer1.Unload reportFile.Close() reportFile.Dispose() GC.Collect() End Sub

  • I将-1 \f25 HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Report Application Server\InprocServer -1\f6和-1\f25 HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Report Application Server\Server -1\f6中的-1\f25 PrintJobLimit -1\f6注册表编辑为-1\f25 9999 -1\f6,但仍会抛出异常。

下面是我称之为报表的代码片段:

代码语言:javascript
复制
 Table_Infos = New TableLogOnInfos()
                Table_Info = New TableLogOnInfo()
                Con_Info = New ConnectionInfo()

                With Con_Info
                    .ServerName = ConfigurationManager.AppSettings("server_name")
                    .DatabaseName = ConfigurationManager.AppSettings("DB")
                    .UserID = user_name
                    .Password = pass_word
                    .Type = ConnectionInfoType.SQL
                    .IntegratedSecurity = False
                End With

                Table_Info.ConnectionInfo = Con_Info

                If Session("recpt_lang") = "Arabic" Then
                    reportFile.Load(Server.MapPath("/Reports/") & "collectrecpt_new_ar.rpt")
                ElseIf Session("recpt_lang") = "English" Then
                    reportFile.Load(Server.MapPath("/Reports/") & "collectrecpt_new.rpt")
                End If

                For Each mytable In reportFile.Database.Tables

                    mytable.ApplyLogOnInfo(Table_Info)

                Next

                CrystalReportViewer1.ReportSource = reportFile
                CrystalReportViewer1.SelectionFormula = Session("SelectionForumla")
                CrystalReportViewer1 = Nothing
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2012-03-06 23:58:36

我建议您将close/dispose/gc.collect代码移到卸载进程之外。换句话说:

  1. Load report
  2. Assign to Viewer Control

Report in Viewer Control

  1. Close Viewer control and Unload any /dispose/gc.Collect outside of any viewer control code

我的猜测是,当报表被清理时,查看器控件并没有完全关闭。

Crystal是一个内存密集型进程,非常挑剔。

票数 11
EN

Stack Overflow用户

发布于 2012-03-07 00:12:52

毕竟,您必须处理您的报表实例。如果在显示报表后对其进行处理,则永远不会再次看到错误“已达到系统管理员配置的最大报表处理作业数限制”。

代码语言:javascript
复制
  Dim report1 As rptBill = clsBill.GetReport(billNumber)

  rpt.Print()

  'Cleanup the report after that!
  rpt.Close()
  rpt.Dispose()
票数 19
EN

Stack Overflow用户

发布于 2016-06-18 02:50:03

水晶报表文档实现了IDisposable接口。因此,您所要做的就是用using语句封装报表的实例。一旦using语句完成,它将被自动关闭并释放。你可以这样写:

代码语言:javascript
复制
using(var report = GetInvoiceReport())
{
     // your logic here
}

或者(取决于您的上下文):

代码语言:javascript
复制
using(var report = new ReportDocument())
{
     // your logic here
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9579914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档