0

Hi when I print large reports with C# and .NET I have the following error how can I solve? I have inserted under the c # code that takes care of generating the reports, the reports are 2 the difference of the two reports is in how the markup is calculated. The query has many elements inside that do not allow you to print correctly.

Error:

Microsoft.Reporting.WinForms.LocalProcessingException: An error occurred during local report processing. ---> 
Microsoft.ReportingServices.ReportProcessing.ProcessingAbortedException: An error has occurred during report processing. ---> 
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.

SQL Code:

DECLARE @T AS table( Descrizione varchar(5000), NumeroCapitolo varchar(100), SottoCapitolo1 varchar(5000), SottoCapitolo2 varchar(5000), SottoCapitolo3 varchar(5000), Totale money, DescrizioneEstesa varchar(5000), Images Image, CostoUnitario money, Quantita money, DescrizioneDis varchar(5000), Tipologia varchar(300), PrezzoRiservato money, UM varchar(50));
INSERT INTO
   @T 
   SELECT
      Capitolo.Descrizione,
      Capitolo.NumeroCapitolo,
      SottoCapitolo.SottoCapitolo1,
      SottoCapitolo.SottoCapitolo2,
      SottoCapitolo.SottoCapitolo3,
      (
         ROUND(((((ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * Capitolo.Ricarico) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2)) / 100) * PercentualeMargine) + (ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * Capitolo.Ricarico) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2))), 2)
      )
      * SottoCapitolo.Quantita as Totale,
      SottoCapitolo.DescrizioneEstesa,
      SottoCapitolo.Images,
      ROUND(((((ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * Capitolo.Ricarico) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2)) / 100) * PercentualeMargine) + (ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * Capitolo.Ricarico) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2))), 2) as CostoUnitario,
      SottoCapitolo.Quantita,
      CASE
         when
            Tipologia = 'Prezzo' 
         then
            SottoCapitolo.Descrizione 
         else
            '' + SottoCapitolo.Codice + '     ' + SottoCapitolo.Descrizione 
      end
      as DescrizioneDis, Capitolo.Tipologia, Capitolo.PrezzoRiservato, SottoCapitolo.UnitaMisura as UM 
   FROM
      Capitolo 
      INNER JOIN
         SottoCapitolo 
         ON SottoCapitolo.IdCapitolo = Capitolo.IdCapitolo 
      INNER JOIN
         Preventivo 
         ON Preventivo.IdPreventivo = Capitolo.IdPreventivo 
   where
      Preventivo.IdPreventivo = '" + IdPreventivo + "';
SELECT
   CASE
      WHEN
         ROW_NUMBER() OVER(PARTITION BY a.Descrizione 
ORDER BY
   a.Descrizione) = 1 
THEN
   a.Descrizione 
ELSE
   '' 
   END
   AS Descrizione, Descrizione as Desc2, a.NumeroCapitolo, a.SottoCapitolo1, a.SottoCapitolo2, a.SottoCapitolo3, a.DescrizioneDis, a.CostoUnitario, a.Quantita, a.Totale AS TotaleCap, a.DescrizioneEstesa, a.Images, a.Tipologia, a.PrezzoRiservato, a.UM 
FROM
   (
      SELECT
         1 AS d,
         ROW_NUMBER() OVER(PARTITION BY Descrizione 
      ORDER BY
         Descrizione) AS r,
         Descrizione,
         NumeroCapitolo,
         SottoCapitolo1,
         SottoCapitolo2,
         SottoCapitolo3,
         Totale,
         DescrizioneDis,
         Images,
         CostoUnitario,
         Quantita,
         DescrizioneEstesa,
         Tipologia,
         PrezzoRiservato,
         UM 
      FROM
         @T 
      UNION ALL
      SELECT
         2,
         0,
         Descrizione,
         NumeroCapitolo,
         '',
         '',
         '',
         SUM(Totale),
         '',
         '',
         '',
         '',
         '',
         Tipologia,
         PrezzoRiservato,
         '' 
      FROM
         @T 
      GROUP BY
         Descrizione,
         PrezzoRiservato,
         Tipologia,
         NumeroCapitolo
   )
   AS a 
ORDER BY
   a.Descrizione,
   a.d
riki
  • 1,502
  • 5
  • 17
  • 45
  • It seems like you try to print/export really large objects (arrays, maybe) or make recursive calls. We need more code to investigate your problem – picolino Jan 31 '20 at 12:51
  • @picolino i had code – riki Jan 31 '20 at 13:03
  • More likely that it's really large data moving through application memory. You need to use pagination to provide bunch of data into your generating report. How to do it in SQL: https://stackoverflow.com/questions/109232/what-is-the-best-way-to-paginate-results-in-sql-server – picolino Jan 31 '20 at 13:15
  • @picolino explain to me how to apply pagination to my query, having never used it, I have no idea how to apply it – riki Jan 31 '20 at 13:21

0 Answers0