Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 大型查询生成崩溃报告查看器_C#_Sql_Sql Server_Report_Rdlc - Fatal编程技术网

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

嗨,当我用C#和.NET打印大型报告时,我遇到了以下错误,我该如何解决? 我在负责生成报告的c#代码下插入了两个报告。两个报告的区别在于如何计算标记。查询中有许多元素不允许正确打印

错误:

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向我解释如何将分页应用于我的查询,因为我从未使用过分页,所以我不知道如何应用分页