为每个组动态创建新Matrix和表,并添加分页符

时间:2013-03-22 19:56:07

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

我有这个问题,在一个组中有几个问题被定义,其中一个问题有描述性答案,其余是数字。 有3个这样的团体,将来可以成长。 我想生成一个报告,我在一个页面中显示组的结果,但应该动态地为每个组生成。

输出看起来像这样:


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


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

因此,必须在不同页面上为每个组重复此操作。 任何人都可以帮助我

谢谢

2 个答案:

答案 0 :(得分: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. 从工具箱中创建一个'Table'对象,并在左下方单元格中仅插入'person'值,它也应该填充一个标题。对其旁边的单元格上的“订单”值执行相同操作。删除右侧的列。您现在应该有四个填充的单元格,两个带标题的值单元格。

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

  5. 除非进行两项更改,否则您可以再次执行第4步。右键单击level1这次添加父级。然后在'level2'上分组。

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

  7. 您无需担心使用SSRS添加更多群组。您只需要担心它们在正确的列中得到区分以动态工作。如果我稍后向我的表中添加了更多数据,以显示level1的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。只要你施放引擎可以解释它,它就没关系了。

答案 1 :(得分:0)

我可以使用Rectangle属性来实现上述问题。

基本上定义了

矩形旁边的

Group_Category ”,然后在类别下方的矩形内放置矩阵。这帮助我在页面上拥有一个父组,并在其中包含其他组和计算。

我必须从相同的数据集中填充或填充字段和数据。