Привет, когда я печатаю большие отчеты с C# и. NET У меня есть следующая ошибка, как я могу решить? Я вставил в код c #, который отвечает за генерацию отчетов, отчетов 2, разница между двумя отчетами в том, как вычисляется разметка. Запрос содержит много элементов, которые не позволяют правильно печатать.
Ошибка:
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 Код:
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