C# 大型查询生成崩溃报告查看器
嗨,当我用C#和.NET打印大型报告时,我遇到了以下错误,我该如何解决? 我在负责生成报告的c#代码下插入了两个报告。两个报告的区别在于如何计算标记。查询中有许多元素不允许正确打印 错误:C# 大型查询生成崩溃报告查看器,c#,sql,sql-server,report,rdlc,C#,Sql,Sql Server,Report,Rdlc,嗨,当我用C#和.NET打印大型报告时,我遇到了以下错误,我该如何解决? 我在负责生成报告的c#代码下插入了两个报告。两个报告的区别在于如何计算标记。查询中有许多元素不允许正确打印 错误: Microsoft.Reporting.WinForms.LocalProcessingException: An error occurred during local report processing. ---> Microsoft.ReportingServices.ReportProcess
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.
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
SQL代码:
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.
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
似乎您试图打印/导出非常大的对象(可能是数组)或进行递归调用。我们需要更多的代码来调查您的problem@picolino我认为更可能是通过应用程序内存移动的大数据。您需要使用分页将大量数据提供到生成的报告中。如何在SQL中实现:@picolino向我解释如何将分页应用于我的查询,因为我从未使用过分页,所以我不知道如何应用分页