【问题标题】:Dynamically Create new Matrix and a Table for each group and add page breaks为每个组动态创建新矩阵和表格并添加分页符
【发布时间】:2013-04-05 00:29:35
【问题描述】:

我有这个问题,在一个小组中定义了几个问题,其中一个问题有一个描述性的答案,其余的是数字。 有3个这样的群体,未来可以发展壮大。 我想生成一个报告,在其中显示组的结果在一页中,但应该为每个组动态生成。

输出如下所示:


 |Group_Category|     |    {Matrix Style; }
 |Question      |Value|


 |Group_Category|                  |   {Table}
 |(+)Question   |Descriptive Answer|

因此,必须针对不同页面上的每个组重复此操作。 谁能帮帮我

谢谢

【问题讨论】:

    标签: sql sql-server reporting-services ssrs-2008


    【解决方案1】:

    让我们举一个简单的例子来描述如何做到这一点。

    1. 让我们创建一个数据源,就本示例而言,这并不重要,因为示例中的所有数据都是自包含的。

    2. 使用以下填充数据集:

      DECLARE @Table TABLE (personID int IDENTITY, person varchar(8), 
      orders int, level1 int, level2 int); 
      
      INSERT INTO @Table VALUES    ('Brett', 10, 1, 1), ('John', 20, 1, 1), 
      ('Peter', 15, 2, 1), ('Jessica', 25, 2, 1), ('Eddie', 7, 3, 1), 
      ('Jimi', 50, 3, 1), ('Robert', 5, 1, 2)
      
      SELECT *
      FROM @Table
      
    3. 从您的工具箱中创建一个“表格”对象并仅在左下角的单元格中插入“人”值,它也应该填充一个标题。对其旁边的单元格上的“订单”值执行相同的操作。删除右侧的列。您现在应该有四个填充单元格,两个带有标题的值单元格。

    4. 对于分组,让我们转到 Visual Studio 中“设计”视图的左下角,您应该会看到当前只有“=Details”(或类似内容)的“行组”。右键单击它并点击“添加父级”。选择“level1”上的组,然后单击“添加组标题”。您现在应该看到添加了另一行,但它是空白的,除了最左列的详细信息之外。在灰色块区域的左侧,您会看到一个 ( 将包含两行,表示它们是“分组”。

    5. 您可以再次执行第 4 步,除非有两个更改。这次右键单击 level1 以添加父级。然后改为在“level2”上分组。

    6. 如果您想在二级分组上分页,请选择“level2”(或该分组的通用等效名称)单击 F4。展开属性下的“PageBreak”。将“BreakLocation”更改为“开始”。您的报告现在将在您的最高级别分组之前分页。

    您无需担心使用 SSRS 添加更多组。您只需要担心它们会在正确的列中得到区分以动态工作。如果我稍后在我的表中添加更多数据以显示级别 1 的 1、2 或 3 以外的分组,SSRS 会捕获它,我不必担心。

    如果您有不同类型的数据以及不同的数据集,请进行编辑,记住您可以使用 UNION 轻松解决此问题:

    EG:

    Select 'I am strings' as group1, 'Descriptive String' as Detail
    from dataset1
    UNION
    Select 'I am numbers', cast(1 as varchar(64))
    from dataset2
    

    当 SSRS 解释“group1”时,它只会看到两个不同的值,因此可以对它们进行分组。它不关心将两种不同类型放在一起的底层 SQL。只要您将它们转换为引擎可以解释它,就没有关系。

    【讨论】:

    • 有没有办法可以在 SSRS 上使用 Loops 并实现这一目标?
    • 我没有从需要循环的描述中得到你想要做的事情。您的数据集可以从查询中成倍增长,并且仍然有一个矩阵或表格表来处理分组。如果您保持列表非常通用,例如:“ID,GroupExplain,Description”,您可以使用您喜欢的任何内容填充组和描述列,并让它们无限增长。
    • 所以您是说报表的增长(矩阵或表格形式的表数)取决于查询本身可用的组数?
    • 没错。如果我有一个包含 ID、组、DateCreated 列的简单数据集。如果我用 5 行填充它,这些行有两个不同的组,但后来我又多了 4 个组。我不必写任何不同的东西。我只需要以正确的方式捕捉它。创建数据集的 SQL 应该为 SSRS 的那一部分完成所有工作。
    • 该组包含矩阵样式和表格样式。它首先显示矩阵样式表,然后在填充所有组后显示表格样式组。
    【解决方案2】:

    我可以通过使用 Rectangle 属性来解决上述问题。

    基本定义了

    "Group_Category" 在矩形旁边,然后在类别下方的矩形内放置一个Matrix和一个Table。这帮助我在页面上有一个父组,并在里面有其他组和计算。

    我的字段和数据必须来自或填充来自同一个数据集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 2021-07-25
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      相关资源
      最近更新 更多