找回密码
 立即注册

QQ登录

只需一步,快速开始

andydainumber1

初级会员

8

主题

58

帖子

366

积分

初级会员

积分
366

活字格认证微信认证勋章

andydainumber1
初级会员   /  发表于:2013-4-2 17:02  /   查看:8029  /  回复:9
--code
VSReport8Lib.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);

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

9 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-4-2 18:27:00
沙发
Demo已经收到,我这边先测试以下。
回复 使用道具 举报
andydainumber1
初级会员   /  发表于:2013-4-3 08:56:00
板凳
回复 2楼dof的帖子

好的,多谢
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-4-3 18:00:00
地板
andydainumber1 你好

我查看了你的工程,设置为 waitfor delay '00:01:01'  或者更大值就会出现异常,VSReport 本身没有提供设置超时的选项,现在可以做的是修改取的数据量,和修改你的存储过程。
回复 使用道具 举报
andydainumber1
初级会员   /  发表于:2013-4-7 09:07:00
5#
回复 4楼dof的帖子

如果这样,那不是所有查询时间超过1分钟的报表,都会报错吗?有的存储过程已经最优了,而且客户需要查询的数据量也没法去限制的。根据你们的经验,有没有其他的方案建议呢?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-4-7 16:19:00
6#
通常情况需要通过分页来控制用户每次查询的数据量,比如每次查询1000条。
回复 使用道具 举报
andydainumber1
初级会员   /  发表于:2013-4-7 16:37:00
7#
回复 6楼dof的帖子

查询结果显示都是分页显示的,根据行高,每页30条数据左右,但是这个方法vsr.RenderToFile显示大数据量的时候,还是会报错;另外,每次查询数据量不好控制,一般客户根据日前范围等条件查询的。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-4-8 17:43:00
8#
andydainumber1 你好

你可以采用报表的分批显示,比如这次用户查询总共会显示1000页报表,然后你可以以100或者200页为单位取数据,这样来避免程序超时。
回复 使用道具 举报
andydainumber1
初级会员   /  发表于:2013-4-9 11:49:00
9#
回复 8楼dof的帖子

嗯,好的,我朝这个方向考虑一下,多谢了
这两天我们也找到一种解决方案,还在完善中.
VSReport8Lib.VSReport vsr = new VSReport8Lib.VSReport();
vsr.RenderToFile(...)
....
我们发现主要是RenderToFile方法会超时,我们就把查询的结果集放到一张临时表中存储,显示的时候的数据源只是这个临时表,这样就缩短了显示查询的时间,把时间转移到前面,显示的时候就不会超时了。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-4-10 10:56:00
10#
很好的性能提升方案。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部