c# - 如何在 C# 中提高事件报表的性能

标签 c# activereports

下面是我使用 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/

相关文章:

c# - if (计数器==<数据库值>)

c# - 不同优化的无法解释的时间

c# - JsonConvert.DeserializeObject 仅对 Xamarin 应用程序返回 null

c# - 使用 CacheToDisk 时,PDF*.tmp 文件未被删除和内存不足异常

asp.net - 如何访问事件报表的控件(数据动态)

c# - 如何访问文件夹并获取 WinRT 类库中的存储文件列表?

richtextbox - 在事件报告软件的富文本框中呈现 html

c# - 如何使用C#和Active Reports创建报告?

.net - 事件报告分组

c# - 允许使用 HttpClient 的不受信任的 SSL 证书