VSReport8Lib.VSReport加载大数据量报错
--codeVSReport8Lib.VSReport vsr = new VSReport8Lib.VSReport();
vsr.Load(filepath, reportName);
--
使用VSReport8Lib.VSReport显示报表数据时,当数据量较大时,提示“函数计算超时”,执行结束后报错并且不显示数据。
希望帮忙分析报错原因。
另外,VSReport有没有默认超时时间,如果有,是多少呢?
以下是示例demo程序和库:
在demo中,我们初步估计,默认超时时间为1分钟左右。
上次咨询过,你们说没有超时时间的设置,那么为什么到了一定时间会弹出报错提示,而直接查询可以正常出数据呢?希望帮忙解答该疑问。
--补充:
最后抛出异常是在显示报表数据的这个方法RenderToFile()上:
vsr.Load(filepath, reportName);
vsr.DataSource.ConnectionString = xmlCon;
vsr.DataSource.RecordSource = xmlSql;
string vpfile = Server.MapPath("~/ReportFile/Reprot" + userId + ".gif");
vsr.RenderToFile(vpfile, VSReport8Lib.FileFormatSettings.vsrVSPrinter); Demo已经收到,我这边先测试以下。 回复 2楼dof的帖子
好的,多谢 andydainumber1 你好
我查看了你的工程,设置为 waitfor delay '00:01:01'或者更大值就会出现异常,VSReport 本身没有提供设置超时的选项,现在可以做的是修改取的数据量,和修改你的存储过程。 回复 4楼dof的帖子
如果这样,那不是所有查询时间超过1分钟的报表,都会报错吗?有的存储过程已经最优了,而且客户需要查询的数据量也没法去限制的。根据你们的经验,有没有其他的方案建议呢? 通常情况需要通过分页来控制用户每次查询的数据量,比如每次查询1000条。 回复 6楼dof的帖子
查询结果显示都是分页显示的,根据行高,每页30条数据左右,但是这个方法vsr.RenderToFile显示大数据量的时候,还是会报错;另外,每次查询数据量不好控制,一般客户根据日前范围等条件查询的。 andydainumber1 你好
你可以采用报表的分批显示,比如这次用户查询总共会显示1000页报表,然后你可以以100或者200页为单位取数据,这样来避免程序超时。 回复 8楼dof的帖子
嗯,好的,我朝这个方向考虑一下,多谢了:hjyzw:
这两天我们也找到一种解决方案,还在完善中.
VSReport8Lib.VSReport vsr = new VSReport8Lib.VSReport();
vsr.RenderToFile(...)
....
我们发现主要是RenderToFile方法会超时,我们就把查询的结果集放到一张临时表中存储,显示的时候的数据源只是这个临时表,这样就缩短了显示查询的时间,把时间转移到前面,显示的时候就不会超时了。 很好的性能提升方案。:hjyzw:
页:
[1]