【问题标题】:Keep Group on One Page using Reporting Services使用 Reporting Services 将组保持在一页上
【发布时间】:2009-05-21 00:03:47
【问题描述】:

我使用 Reporting Services 创建了一个报表作为 C# 应用程序的一部分,但我无法找到一些我习惯于在其他环境中看到的功能。我相信 MS Access 和 Crystal 报表都有一个名为“保持在一起”的选项,这样您就可以将特定的数据分组保留在一页上,而不是将信息分成两页。

当我的报表在 C# 应用程序中本地呈现并使用 .net 报表查看器查看时,我如何使用 2005 Reporting Services 执行此操作。本质上,我想将某一年的所有记录保存在一页上。我正在使用 Visual Studio 2008。

年份是其中一列,一年的行数总是小于一页。我的报告只使用了一个表格,并有一个按年份分组的最内层,然后是另一个按客户名称分组的外层。

目前我可以在报告中拟合两年的数据,但是,如果数据从第一年的一半开始,那么我会得到以下信息:

例子:

第一页: 2004 年的 1/2,因为数据从 04 年中途开始

2005 年全年

2006 年上半年

第2页: 2006年下半年

我宁愿将 2006 年的所有内容推到第二页。

我目前正在为报告中的所有数据使用一个表格。表级别有一个保持在一起的选项,但我需要一个组级别的选项。在这种情况下,按年份分组。

我们将不胜感激。

【问题讨论】:

    标签: c# .net sql-server reporting-services


    【解决方案1】:
    1. 在报告中插入“列表”。
    2. 在其“Tablix 属性”下,将“数据集名称”属性设置为您的数据集名称。
    3. 在设计视图中右键单击列表,然后选择“行组 > 组属性”。
    4. 在“组属性”窗口中,单击“组表达式”下的“添加”按钮,然后选择要在页面中分组的字段。
    5. 之后,您可以在行组内为您的详细数据插入一个“表格”。
    6. 呈现报表后,报表将在分页符之间将组内的数据保持在一起。

    【讨论】:

    • 除了作为上述问题的解决方案之外,将表格嵌套在列表中的技术还为我解决了许多与分组相关的问题,例如重新打印标题行,将大型组页脚部分保持在一起等。非常感谢,你让我免于许多头痛!
    【解决方案2】:

    请在“行组”部分下单击要在同一页面中保持在一起的组。单击所需组后,在属性部分中设置“Keep Together option as True”。就是这样。它对我有用。

    【讨论】:

    • 如果您发现它的问题......选择“WekeTogether”选项在选中该组时在“属性”窗口中,而不在组的“组属性”对话框中找到。
    • 有趣的是,这个选项根本不会改变任何东西。
    【解决方案3】:

    只是在约翰的回答中添加一点。对于 SSRS 2005,List 和 Table 对象确实具有 KeepTogether 属性,这意味着它们将尝试将所有内容都保留在一页上。我认为最好的方法是先听从约翰的建议。

    【讨论】:

    • 感谢您的回复。我在表级别找到了 Keep Together 选项,但在组级别却没有。只是为了澄清,我没有使用矩阵,我使用的是表格。表格中的分组级别是否有保持在一起的选项? – 再次感谢。
    • AFAK,组中没有 KeepTogether 属性。您将不得不使用分页符并找到将数据保持在报告页面大小限制内的方法(如 John 提到的)。对我来说,在我的环境中,格式问题等是很多挫折的根源。 :)
    • 另一个想法添加到您的示例中。如果是我,我可能会按年份分组,并在年份分组后设置分页符。
    • 我需要在一个页面上放置两年,并且页面的格式已经足够大,可以使用两年。
    【解决方案4】:

    好的,您需要做的是首先将报告页面大小定义为足够大以包含整个数据区域。

    见:

    http://msdn.microsoft.com/en-us/library/bb677374.aspx

    然后,您需要将分页点添加到矩阵中的组。见下文:

    http://msdn.microsoft.com/en-us/library/ms156434.aspx

    【讨论】:

    • 感谢您的帮助。我更新了我的问题以提供更好的信息。报告页面已经足够容纳两年,但有时我会得到一整年和两个部分年份。此外,我使用的是报告表而不是矩阵。也许我需要切换到矩阵。再次感谢。
    【解决方案5】:

    使用 Rectangle 元素并将所有控件复制并粘贴到其中。在 tke 矩形属性上,选中将内容保持在一起的框。如果您不想要额外的线条,请不要包含边框。

    我在页脚需要的矩阵元素之外有许多项目。我只想要他们 在最后一页,所以我不能使用标准页脚部分。通过将它们放在矩形中,我可以避免在组中间出现分页符。

    【讨论】:

      【解决方案6】:

      问题是我需要两年的时间在一个页面上,而不是 1/2 年,即使特定的记录集在一年中开始。事实证明,即使在表级别有“保持在一起”选项,在组级别也没有。我需要在小组级别使用此选项。我没有使用格式解决方案,而是更改了报告的底层 SQL。在只有 1/2 年数据的情况下,我为一年中的另一部分创建了日期正确的记录,但所有其他值都为零。这意味着如果页面格式正确以保存两年,那么它将始终显示两个完整的年份,并且一年永远不会超过两页。我还认为 Mozy 和 John Sansom 提供的答案很好,我都投了赞成票。

      感谢您的帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-20
        • 2021-10-04
        相关资源
        最近更新 更多