Ciao a tutti,
ho sviluppato un applicazione in ASP.NET con l'utilizzo di crystal report.
Ricevo il seguente messaggio di errore durante la generazione del report
"E' stato raggiunto il limite massimo per i processi di elaborazione dei report configurato dall'amm. di sistema "
Ho riscontrato che questo limite è di 75 generazioni, quando cerco di generare il 76esimo report mi genera quell'errore.
L'applicazione è installata su un windows server 2012 Standard, ho configurato un webapplication su
IIS e ci sono vari client che si collegano. (non lavora in internet, lo utilizzano solo all'interno di una rete intranet).
Se riavvio il client questo errore non si genera più, fino a quando non raggiungo di nuovo il limite.
E' capitato che dopo la 4° volta che è stato raggiunto il limite, anche se riavviavo il client, non si sbloccava, ed erano bloccati tutti i client e non soltanto quello che aveva ricevuto l'errore.
Per risolvere il problema ho dovuto riavviare il server.
Vi riporto il codice utilizzato per estrarre i dati dal db ms sql 2014 express e generare il report.
codice:Imports System.Data Imports System.Configuration Imports System.Data.SqlClient Imports CrystalDecisions.CrystalReports.Engine Partial Class Report_fattura_vendita Inherits System.Web.UI.Page Dim sql As String Dim crystalReport As New ReportDocument() Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Request.QueryString("id") <> "" Then ID_FATTURA.Value = Request.QueryString("id") crystalReport.Load(Server.MapPath("~/report/fattura_vendita.rpt")) sql = "SELECT ********************** FROM ****** WHERE ******" Dim dsDettaglio As DataSet1 = GetData(sql) crystalReport.Database.Tables(0).SetDataSource(dsDettaglio) CrystalReportViewer1.ReportSource = crystalReport End If End Sub Private Function GetData(ByVal query As String) As DataSet1 Dim conString As String = ConfigurationManager.ConnectionStrings("dbConnectionString").ConnectionString Dim cmd As New SqlCommand(query) Using con As New SqlConnection(conString) Using sda As New SqlDataAdapter() cmd.Connection = con sda.SelectCommand = cmd Using dsCustomers As New DataSet1() sda.Fill(dsCustomers, "DT_Fattura_vendita") Return dsCustomers End Using End Using End Using End Function Private Function GetData2(ByVal query As String) As DataSet1 Dim conString As String = ConfigurationManager.ConnectionStrings("dbConnectionString").ConnectionString Dim cmd As New SqlCommand(query) Using con As New SqlConnection(conString) Using sda As New SqlDataAdapter() cmd.Connection = con sda.SelectCommand = cmd Using dsCustomers2 As New DataSet1() sda.Fill(dsCustomers2, "dettaglio_fatt") Return dsCustomers2 End Using End Using End Using End Function Protected Sub CrystalReportViewer1_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles CrystalReportViewer1.Unload crystalReport.Close() crystalReport.Dispose() End Sub End Class
Ho provato a cercare su internet ma non sono riuscito a trovare una vera risoluzione al problema!
Ho letto l'articolo dove dicevano di cambiare il valore di una chiave di registro che era settata a 75, l'ho fatto ma non ha funzionato.
Avevo trovato anche una risposta su un forum della microsoft dove dicevano di inserire l'evento Unload del crystalreportviewer facendo il close e il dispose dell'oggetto, ma questo sembra non funzionare correttamente, mi spiego meglio:
Il report viene generato su una nuova scheda e loro chiudono questa scheda dalla X rossa in alto, mi viene il dubbio che facendo così l'evento unload non si verifica, è possibile? Quando ho fatto le prove non ho chiuso la finestra ma semplicemnte l'aggiornavo, e con queste due istruzioni non mi si bloccava più a 75 come prima...
Farò le verifiche in questi giorni ma dubito che queste due istruzioni mi risolvino il problema...
Se qualcuno sa cosa dovrei fare per aumentare il limite, oppure se non chiudo correttammente la connessione...
Grazie
Ciao

Rispondi quotando