子报告尝试并保持在一起留下空白点/页面

时间:2009-03-11 15:28:21

标签: reporting-services reportingservices-2005 subreport

Reporting Services 2005

我的布局是这样的:

  • 我的mainreport包含一个表
  • 此表有3个运行的组,GrpLevel1,GrpLevel2,GrpLevel3
  • 子报告将添加到3个组中的一个,并将该组密钥传递给子报告

因此,一个特定的子报告将在GrpLevel1上运行,并且对于它包含的每个level2,将运行GrpLevel2下的子报告。

我遇到的问题是子报告想要跳转到下一页,在报告中留下空白的空洞。

如果一个子报告包含一个包含大量数据的表,并且它不能适合页面的3/4(报告的第一页上有报告标题位于前1/4),它将全部跳转到下一页只留下一个标题,而不是在第一页上打印它。

在桌子上我关闭了“Keep Together”。

我不知所措,准备好让我的立方体着火了。对此的见解将不胜感激。

更新 ****************这已在SSRS 2008 R2中修复*************** ********
它已与(SQL Server)Reporting Services 2008 R2一起修复。您现在可以在子报表上切换KeepTogether。分页看起来好多了。

6 个答案:

答案 0 :(得分:6)

看起来没有解决此问题的方法。这个错误是由微软知道的,但它仍未在SSRS2008中修复。

来自知识库文章(http://support.microsoft.com/kb/938943

  

出现此问题的原因是   子报表控件具有隐含性   KeepTogether财产。按设计,   KeepTogether属性试图保持   一页上子报表的内容。   由于这种行为,报告   引擎在主要部分创建空白区域   报告子报表是否不合适   与主报告在同一页面上。   然后,报表引擎创建   子页面在新页面上。

他们列出的工作主要是“不要使用子报告”

答案 1 :(得分:4)

我不确定早期版本的SSRS,但我在SSRS 2008中遇到了同样的问题。

解决方案是更改Code中的Subreport属性。

  1. 转到解决方案资源管理器,右键单击您的报告,然后单击“查看代码”。

  2. 搜索子报告。

  3. 在子报告标记内,您会找到“<KeepTogether>”,将其设置为“true”,将其更改为“false”

  4. 此属性不是设计者可用的,必须从实际的报告xml代码更改。

答案 2 :(得分:1)

右键单击子报表并选择format subreport,然后取消选中keep object together

答案 3 :(得分:0)

我解决此问题的另一种方法是将子报表放在报表标题中。当然,这非常依赖于报告内容,并且消除了后续部分的任何有用性,但它确实解决了我在第一页上有大量空白的问题。

答案 4 :(得分:0)

我花了一个星期来解决这个问题!但我确实找到了解决方案,并乐意与您分享。

我遇到了完全相同的问题。在我的主报告中,有一个表,每组有3组和2个不同的子报告。这些子报告有矩阵。我相信无论矩阵如何,子报表都放在表格中的组/细节带内,导致在这些部分之前,之间和之后打印出大量不必要的空白页面。这是一个痛苦的脖子,我正在考虑删除子报告,但它失去了报告的整个目的。

最后,修复它的是什么,而不是将子报表放在表中组的DETAIL带中,将它们放在组的页脚中。现在我知道这可能会改变/影响报告的格式,可能不符合您的报告目的。但这解决了我的问题。解决空白页问题的另一种方法是将子报告留在任何地方(细节或组带),并将OTHER细节带移动到一个页脚带中。基本上需要记住的是减少表格内的细节/组带数量。如果可以管理,则限制分组并在表中包含最少的子报告数。

希望这可以帮助那些人。

答案 5 :(得分:0)

对于SSRS 2008 如果子报表位于任何组中,则应转到组属性并将该组的保持在一起的属性切换为false。这对我有用。