水晶报表导出需要永远
Posted
技术标签:
【中文标题】水晶报表导出需要永远【英文标题】: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
) 的主报告。
我一直在研究很多 here 或 even here 和 ...
当我使用 SQL Server Profiler 检查时,我发现查询没有暂停,而且查询似乎在尖叫循环中运行。 我真的需要这个来导出,SOS。
【问题讨论】:
【参考方案1】:如果这些子报表在重复部分中(详细信息最差),那么主报表中的每个子报表都会有一个查询。 也就是说,如果您的主报表有 1000 条记录,而子报表位于详细信息部分,那么您将有 4001 个查询(1 个用于主报表,然后 1000 个用于每个子报表)。 要进行测试,请删除所有子报表,然后一一添加回来,看看是否有一个比其他的差。 它在 Crystal Reports 设计器中不会那么明显,因为 Crystal 只会在您导航到页面时运行子报表。尝试将总页数添加到第一页以查看可怕的结果。
解决方案通常是在查询中完成工作或使用 SQL 函数。只是取决于您的报告需求。
【讨论】:
我不明白为什么水晶报表要这样做,应该是每个子报表的一个查询,不应该吗? ,在查看器中运行速度很快,但是当你直接导出时,它会遇到这些问题!!!!感谢水晶团队.. 它在查看器中运行很快,因为它一次只运行一页。如果每次显示时都将参数传递给查询,它如何为子报表运行一个查询? 我该如何处理?我希望它像查看器一样工作,所以我从你的回答中得到什么,因为我有 4 个详细的子报告部分。查询或sql函数是什么意思。我有一个与主标题有关的因素, products , parts , services 和 addeds 是我的子报告,这怎么可能在像查看器这样的单个页面中快速运行?非常感谢您的宝贵时间。 您的导出速度不会比查看器慢!如果您的查看器是来自 SAP 的查看器,那么它不会刷新数据 - 这是需要时间的部分。 您唯一能做的就是重新设计报表,使其在详细信息部分没有子报表,解决方案取决于您的报表在做什么。以上是关于水晶报表导出需要永远的主要内容,如果未能解决你的问题,请参考以下文章