【问题标题】:Crystal Report export take forever水晶报表导出需要永远
【发布时间】:2021-10-20 07:49:59
【问题描述】:

我正在努力将 Crystal Report 导出到 Word 文档。

我正在使用以下代码创建报告:

using (ReportDocument initRep = report.SetUpReportDocument(rep, loadId))
{
    string filePath = @"C:\word2Pdf\";
    string fileName = Guid.NewGuid().ToString() + "wordReport.doc";

    var fileNameAndPath = filePath + fileName;
    initRep.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.WordForWindows, fileNameAndPath);
 }

问题出在这里,在这行代码上:

 initRep.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.WordForWindows, fileNameAndPath);

这需要很长时间,没有任何错误。

我的报告有 4 个子报告,它们链接到具有唯一 ID (loadId) 的主报告。

我一直在研究很多 hereeven here 和 ...

当我使用 SQL Server Profiler 检查时,我发现查询没有暂停,而且查询似乎在尖叫循环中运行。 我真的需要这个来导出,SOS。

【问题讨论】:

    标签: c# asp.net asp.net-mvc crystal-reports webapi


    【解决方案1】:

    如果这些子报表在重复部分中(详细信息最差),那么主报表中的每个子报表都会有一个查询。 也就是说,如果您的主报表有 1000 条记录,而子报表位于详细信息部分,那么您将有 4001 个查询(1 个用于主报表,然后 1000 个用于每个子报表)。 要进行测试,请删除所有子报表,然后一一添加回来,看看是否有一个比其他的差。 它在 Crystal Reports 设计器中不会那么明显,因为 Crystal 只会在您导航到页面时运行子报表。尝试将总页数添加到第一页以查看可怕的结果。

    解决方案通常是在查询中完成工作或使用 SQL 函数。只是取决于您的报告需求。

    【讨论】:

    • 我不明白为什么水晶报表要这样做,应该是每个子报表的一个查询,不应该吗? ,在查看器中运行速度很快,但是当你直接导出时,它会遇到这些问题!!!!感谢水晶团队..
    • 它在查看器中运行很快,因为它一次只运行一页。如果每次显示时都将参数传递给查询,它如何为子报表运行一个查询?
    • 我该如何处理?我希望它像查看器一样工作,所以我从你的回答中得到什么,因为我有 4 个详细的子报告部分。查询或sql函数是什么意思。我有一个与主标题有关的因素, products , parts , services 和 addeds 是我的子报告,这怎么可能在像查看器这样的单个页面中快速运行?非常感谢您的宝贵时间。
    • 您的导出速度不会比查看器慢!如果您的查看器是来自 SAP 的查看器,那么它不会刷新数据 - 这是需要时间的部分。
    • 您唯一能做的就是重新设计报表,使其在详细信息部分没有子报表,解决方案取决于您的报表在做什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    相关资源
    最近更新 更多