cancel
Showing results for 
Search instead for 
Did you mean: 

which version of crystal reports for .NET 4.5

Former Member
0 Kudos

Hi,

We migrated our existing application from .NET 3.5 to .NET 4.5 and upgraded crystal runtime environment  from visual studio 2008 for visual studio 2012 by following these links

http://downloads.businessobjects.com/akdlm/crnetruntime/clickonce/CRRuntime_32bit_13_0_3.msi.

http://downloads.businessobjects.com/akdlm/cr4vs2010/CRforVS_13_0_5.exe

After this upgrade in the Application we are getting this error

Load report failed.

   at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

   at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)

   at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)

   at SolutionSuite.WebApp.CrystalViewer.LoadReport(Boolean bRefresh)

   at SolutionSuite.WebApp.CrystalViewer.Page_Load(Object sender, EventArgs e)

   at System.Web.UI.Control.OnLoad(EventArgs e)

   at System.Web.UI.Control.LoadRecursive()

   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

The maximum report processing jobs limit configured by your system administrator has been reached.

   at CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options)

   at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options)

   at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

The code in asp.net application is as follows

<CR:CRYSTALREPORTVIEWER id="crvMain"  HasPrintButton="False" HasExportButton="False" style="Z-INDEX: 100; LEFT: 8px; POSITION: absolute; TOP: 36px" runat="server"

  ToolPanelView="None" BorderColor="Transparent" BorderStyle="None" Height="50px"

  Width="350px" HasRefreshButton="True" HasCrystalLogo="False" HasToggleGroupTreeButton="False" meta:resourcekey="crvMainResource1"></CR:CRYSTALREPORTVIEWER>

Private m_oReportDocument As New ReportDocument

Private Sub LoadReport(ByVal bRefresh As Boolean)

     

        'Get the report data

        Dim dtReport As DataTable = ReportHelper.GetReportData(Me.CacheKey, bRefresh)

        'If there is data to display bind it to the Crystal Viewer

        If dtReport.Rows.Count > 0 Then

            With m_oReportDocument

                .Load(ReportHelper.GetReportPath(Me.ReportId))

                .SetDataSource(dtReport)

                .PrintOptions.PaperSize = Common.Settings.CrystalPaperSize

            End With

            crvMain.ReportSource = m_oReportDocument

        Else

    

        

        End If

    End Sub

    Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload

        m_oReportDocument.Dispose()

    End Sub

We reset the registry value PrintJobLimit from 75 to -1 and that did not resolve the problem. Do we need to buy the full crystal reports package in order to resolve this issue(If thats the case what version of Crystal Reports we need to buy) or there is some thing wrong in the code that's causing this problem because with .NET 3.5 we did not have this problem.

Accepted Solutions (1)

Accepted Solutions (1)

DellSC
Active Contributor
0 Kudos

Have you verified that what is being returned by "ReportHelper.GetReportPath(Me.ReportId)" points to a valid report file?  What is returned by this function?

-Dell


Former Member
0 Kudos

Thanks Stinnett. This problem

The maximum report processing jobs limit configured by your system administrator has been reached.

   at CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options)

   at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options)

   at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

only happens in the in the production environment and is intermittent. In development and test environment we have so far not been able to reproduce this error but its keep annoying our customers in the production by occuring 5 to 10 times a day. I dont know whether its a multiuser limitation in new crystal environment or something else because this did not happen at all in the older version of crystal.

DellSC
Active Contributor
0 Kudos

This is a limitation in the new environment.  I don't remember whether the limit is 3 or 5 concurrent sessions.  There were limits in the older SDK as well, but I'm not sure how well they were enforced.  You need to be sure that you're explicitly using ReportDocument.Close() and then ReportDocument.Dispose() when users close their reports to ensure that the sessions are being freed up.

If you do a search here, there's lots of information about where and when to do that.

-Dell

Former Member
0 Kudos

Thanks very much.

If I close the connection like this   

  Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload

        m_oReportDocument.Close()

        m_oReportDocument.Dispose()

    End Sub

then how do i get rid from limitation of 3 - 5 concurrent sessions. Also do you know any utility that can be used to identify number of current concurrent sessions of crystal reports user.

former_member183750
Active Contributor
0 Kudos

The limit is 3 CPL (Concurrent Processor License). This can not be changed with the CR SDK. Only way to get more CPL is to upgrade to CR Server. However there is also a thing called a Print Job and you may want to have a look at this:

Crystal Reports Maximum Report Processing Jobs ... | SCN

Also, don't forget to use the search box in the top right corner. A search string like 'crystal net limit' will bring up a number of other resources.

- Ludek

Senior Support Engineer AGS Product Support, Global Support Center Canada

Follow us on Twitter

Former Member
0 Kudos

Thanks very much Luke.

In the code I used following approach

  Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload

        m_oReportDocument.Dispose()

    End Sub

but after Stinnet recomendation i have modified the code like this

  Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload

        m_oReportDocument.Close()

        m_oReportDocument.Dispose()

    End Sub

but in order to test this i will deploy a new release and see if problem goes away.

But from yours expertise Do you think its due to the close method not being called that's why we are getting this error. And modifiying it will resolve the problem.

Also In the production I have changed PrintJobLimit from 75 to -1 but that has not solved the problem and we are keep getting this error after every so often during a day. When we were on .NET 3.5 with Crystal reports 10.5 with this code

  Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload

        m_oReportDocument.Dispose()

    End Sub

the problem never happened. Is this something new Limitation introduced in Crystal Reports for .NET 4.5 and is there any utility to track number of concurrent sessions or users I can use to resolve this issue.

I would be very grateful to you for your urgent reply

Thanks

former_member183750
Active Contributor
0 Kudos

Hi

The .close and .dispose is best practice. But it will only manage the actual report document objects. If you look at the Event Viewer, you will see messages like:

A Crystal Reports job was delayed 2 second waiting for a free license to become available.

E.g.; three object are submitted, subsequent jobs are queued up and wait for a license. This is why the issue is not so easy to reproduce on your dev and QA environments. E.g.; it depends on the load as well as the report and the hardware. Throwing beefier hardware at the issue may help, but only to a point. Eventually you may end up with so many objects queued up, you will bring the server down. And there is really no CR API that will let you monitor the load.

As far as setting the Print Jobs to -1. This only applies to the Crystal Reports Server (and possibly just the OEM edition). So, set the limit to something like 400 and see what happens. Remember that almost any action on the report results in a Print Job; paging, zooming, drilling, printing, exporting, etc., etc. In addition a subreport is also considered to be a Print Job. So a subreport in a detail section of a report that returns 1000s of records will run 1000s of Print Jobs. And again, warning re. increasing this value too much; increasing the value puts the load on the hardware so the server may again start to be affected.

One final idea on handling the loads is web farms:

How Do I Use Crystal Reports in a Web Farm or Web Garden?

As to this not happening with CR 10.5, you got me totally mystified. CRVS (v13.x), is way better than CR 10.5 ever was in handling loads. I'd say the first thing to do here would be to investigating the environmental differences; OS, Hardware, network, number of users, number of reports, same reports(?), database changes, etc., etc.

- Ludek

Former Member
0 Kudos

Thank you so much for your reply. I will discuss this issue further with Senior Developer and Project Manager and would come back to you afterwards.

Former Member
0 Kudos

Hi Ludek,

I have checked on production server Event Viewer>Windows Log>Application and I can see the following  error messages

The following information was included with the event:

An exception has occured:Load report failed.

   at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

   at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)

   at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)

   at AppSuite.WebApp.CrystalViewer.LoadReport(Boolean bRefresh)

   at AppSuite.WebApp.CrystalViewer.Page_Load(Object sender, EventArgs e)

   at System.Web.UI.Control.OnLoad(EventArgs e)

   at System.Web.UI.Control.LoadRecursive()

   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

the message resource is present but the message is not found in the string/message table

Load report failed.

   at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

   at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)

   at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)

   at AppSuite.WebApp.CrystalViewer.LoadReport(Boolean bRefresh)

   at AppSuite.WebApp.CrystalViewer.Page_Load(Object sender, EventArgs e)

   at System.Web.UI.Control.OnLoad(EventArgs e)

   at System.Web.UI.Control.LoadRecursive()

   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

The maximum report processing jobs limit configured by your system administrator has been reached.

   at CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options)

   at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options)

   at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

But I cannot see the message you pointed out in the reply A Crystal Reports job was delayed 2 second waiting for a free license to become available.


I would be grateful if you could assist me where to find this information on Production Server.

Thanks

former_member183750
Active Contributor
0 Kudos

I am trying to get info on the cr job was delayed message as someone here mentioned that they think we don't do that anymore... I hope not.

I'd be interested to know how many reports you have to run before you get the load report failed error?

- Ludek

Answers (0)