下面是我使用 Active Reports 显示报告的 C# 代码。
DataDynamics.ActiveReports.Viewer.Viewer VBatchInvoice;
List<M3.UDT.ReportData> lstReport="Values comes from database near about 800 records"
ar.DataSource = lstReport;
ar.Run();
VBatchInvoice.Document = ar.Document;
这个主报告还包括一个子报告。
语句 ar.Run() 大约需要 10 秒。我的客户说时间太多了。我想尽可能地减少这个时间。这需要这么长时间才能产生,可能的原因是什么?对此问题的任何解决方案将不胜感激。
最佳答案
我建议阅读此文章中接受的答案:
What are the generic ways to make Reporting Services faster
我还要指出您对第 3 点的关注。
事件报告通常很慢,但您可以采取一些措施来尝试减少这种情况。
优化部分代码等。但是我怀疑这会影响代码的 ar.run 部分。
除非您在报告本身中做一些逻辑。您的逻辑应该在数据源处完成。这样 Active Reports 在构建报告时就没有什么可做的了。如果您需要在一份报告中包含 800 条记录,也可能值得检查一下。
除此之外,这是否可以在一夜之间实现?我知道 10 分钟确实不是很长的时间,但是如果可以的话。为什么不使用调度程序在夜间创建这些报告?当然,只有在经常使用报告并且仅依赖于昨天的数据时才应该这样做。
优化
同样,这可以在几个方面完成:
SQL - 确保这一端平稳高效地运行,sql 确实提供存储过程的执行时间,这很有用。然而,SQL 通常是高效的,除非你把事情弄得过于复杂。
.Net - 在这里做你的逻辑!考虑使用 DataReader 而不是 List 或 DataTable,DataReader 通常更快。这里的重点是逻辑!
ActiveReports - 请不要讲逻辑!除非绝对必须在此时完成。
关于c# - 如何在 C# 中提高事件报表的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20374100/