RDLC子报表数据多的时候内存溢出

小楼寂寞 2013-12-07 01:43:28
对RDLC子报表,在子报表事件函数中给其指定一个查询出来的完整的数据记录表Table,然后每个子报表中使用filter过滤取到某几行数据集来显示,比如从母报表中传来的时间作为过滤条件。
这样在数据量少的情况下,这是没问题的,但主报表的分类数据量上千的话,每个子报表都有一个完整的数据集,乘以1000,就造成内存使用过大,内存溢出错误。
思路:能不能再子报表事件函数中只指定某几行记录组成的表Table1,问题是事件响应函数中怎么判断是哪个主报表的分类子报表?从而在程序中实现过滤作用?
...全文
373 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lasesiwen 2013-12-07
  • 打赏
  • 举报
回复
引用 2 楼 qiu123 的回复:
主报表倒是不是和子报表同一个数据集,主报表中主要获取distinct的日期数据集,而子报表是完整的数据集,一个日期可能对应包含一个或多条数据记录, 我现在的想法是就在主报表中的subreport控件的属性里面设置参数,通过主报表传递过去,然后再子报表事件处理函数void LocalReport_SubreportProcessing(object sender, Microsoft.Reporting.WebForms.SubreportProcessingEventArgs e)中使用e.Parameters来获取一个参数值,然后过滤数据集后再赋过滤后的数据集给子报表;这样应该不会造成内存占有太大的问题了。
这样肯定没问题,只要速度跟得上就行了,LZ还是去实践下吧
小楼寂寞 2013-12-07
  • 打赏
  • 举报
回复
主报表倒是不是和子报表同一个数据集,主报表中主要获取distinct的日期数据集,而子报表是完整的数据集,一个日期可能对应包含一个或多条数据记录, 我现在的想法是就在主报表中的subreport控件的属性里面设置参数,通过主报表传递过去,然后再子报表事件处理函数void LocalReport_SubreportProcessing(object sender, Microsoft.Reporting.WebForms.SubreportProcessingEventArgs e)中使用e.Parameters来获取一个参数值,然后过滤数据集后再赋过滤后的数据集给子报表;这样应该不会造成内存占有太大的问题了。
lasesiwen 2013-12-07
  • 打赏
  • 举报
回复
子报表应该是用的同一个数据集的呀,既然你都分主、子报表了,就直接将完整主表和完整字表动态赋给报表就行了,在报表那里设置好主、子的链接关系

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧