如何为分组列创建汇总行

8

如果有一个包含分组列的rdlc报表在一个表格中。我想添加一个页脚行,跨越所有动态创建的列,并显示所有列的总计。如何告诉单元格应该跨越由组创建的所有列?

|-------|-------|-------|
| col 1 | col 2 | col 3 |
|-------|-------|-------|
|   Column-Group Total  |
|-----------------------|

请注意,计算总数不是我的问题。我只是在寻找一种方法,告诉报表查看器合并自动生成的特定行的列组中的单元格。
更新 遗憾的是,到目前为止,我还没有找到解决方案。此外,在一个报表中,我也遇到了同样的问题,需要合并行组中的总计列。
|------|-------|
|row 1 |       |
|------| Row-  |
|row 2 | Group |
|------| Total |
|row 3 |       |
|------|-------|

我发现这是一种显示总数的常见方式。是否有其他方法或者我忽略了某些明显的东西?
更新2 以下是我想要的屏幕截图:
在中间有一个组。这会在运行时创建n个列。我想做的是“跨类别总计”跨越所有动态创建的列。这意味着,单元格的列跨度是n。只有一个单元格,在这个单元格中我将显示所有类别的总数。它几乎与报表查看器在组的顶部自动创建的内容相同。

动态列,这是某种类似于数据透视表的东西吗(例如财政年度的列标题和在该财政年度中花费的美元数据值)? - Pulsehead
@Pulsehead:没错,正如你所提到的,有些报告具有年份旋转。例如,col1 = 2005,col2 = 2006,col3 = 2007,列组总计应显示col1-col3的总计。在其他报告中,还有其他分组列,例如办公地点、月份等。列数不固定,取决于要可视化的数据。 - HCL
3个回答

1

不知道你是否已经找到了答案,如果没有...

通常情况下,对于按列分组的数据,总计数应该在最后一列中,而对于按行分组的数据,则应该在最后一行中。

但是,根据范围和分组级别的不同,您可能可以通过将您的表格嵌入到外部表格中,并在外部表格中添加一行来实现您想要的效果。

我曾经使用矩形和列表中的多个数据区域来操作各种布局。您只需要尝试不同的范围,并可能调整输出数据(存储过程中按组求和/平均值),如果这些范围不合作的话。如果解决了您的问题,请告诉我。


现在尝试添加一张截图,应该可以了。 - saluce

0
据我所知,rdlc是您在报表向导或Visual Studio上编辑的报表文件,而不是在BIDS上开发的报表文件rdl。
我不知道这是否适用于rdlc文件,因为我只使用BIDS,但我认为值得一试:
1. 在行组选项卡(左下角),右键单击您的组并选择添加总计->之后,它将添加一个总计行。 2. 暂时将总和单元格(总计)复制到报表的其他位置(因为下一步会擦除它,如果您不这样做) 3. 使用SHIFT,逐个选择要合并的行上的单元格(不要选择行本身) 4. 右键单击它并选择合并单元格 5. 粘贴您在第2步中复制的总和单元格
结果(希望您能看到):

enter image description here

编辑:

回答你的问题,是的,我确定它可以做到,因为我已经做了好几次,而且你也在截图中看到了。 我将我的行的XML粘贴在这里,我认为秘密就在于<ColSpan>8</ColSpan>标签。我的报告确实有8列。

<TablixRow>
<Height>0.25in</Height>
<TablixCells>
  <TablixCell>
    <CellContents>
      <Textbox Name="textbox18">
        <CanGrow>true</CanGrow>
        <KeepTogether>true</KeepTogether>
        <Paragraphs>
          <Paragraph>
            <TextRuns>
              <TextRun>
                <Value>=Sum(Fields!myField.Value)</Value>
                <Style>
                  <FontFamily>Tahoma</FontFamily>
                  <FontSize>9pt</FontSize>
                  <Format>'$'#,0.00;('$'#,0.00)</Format>
                </Style>
              </TextRun>
            </TextRuns>
            <Style>
              <TextAlign>Right</TextAlign>
            </Style>
          </Paragraph>
        </Paragraphs>
        <rd:DefaultName>textbox16</rd:DefaultName>
        <Style>
          <Border>
            <Color>LightGrey</Color>
            <Style>Solid</Style>
          </Border>
          <BackgroundColor>White</BackgroundColor>
          <PaddingLeft>2pt</PaddingLeft>
          <PaddingRight>2pt</PaddingRight>
          <PaddingTop>2pt</PaddingTop>
          <PaddingBottom>2pt</PaddingBottom>
        </Style>
      </Textbox>
      <ColSpan>8</ColSpan>
      <rd:Selected>true</rd:Selected>
    </CellContents>
  </TablixCell>
  <TablixCell />
  <TablixCell />
  <TablixCell />
  <TablixCell />
  <TablixCell />
  <TablixCell />
  <TablixCell />
</TablixCells>
</TablixRow>

谢谢你的回答。我已经尝试过,但是Visual Studio不允许我合并单元格(步骤3+4)。只要我选择一个属于组的单元格,编辑器的合并命令就会被禁用。您确定BIDS可以实现这一点吗?如果是的话,可能有机会在xml中定义合并,因为据我所知,渲染引擎是相同的。在这种情况下,它只是编辑器的限制。您能否确定BIDS允许合并分组单元格?这将对进一步搜索非常有帮助... - HCL
但是你想要什么呢?所有行的col1 + col2 + col3的总和吗?那只需要将你的表达式从=Sum(Fields!col1.Value)更改为=Sum(col1+col2+col3)即可。 - Diego
嗯,我想我明白了。你是如何生成动态列的?附注:你来自哪里? - Diego
你好HCL。你没有告诉我你是如何生成动态列的。我需要这些信息来进一步帮助你。 - Diego
你好,请看我帖子中添加的图片。在中央,有一个列组(带有橙色条的列)。我将表头命名为“类别”。运行时,该组根据提供的数据创建n个列。目标是使单元格“跨类别总计”成为合并单元格(仅一个单元格),而“类别”单元格和“数值”单元格不会被合并,因此将被乘以n次(n是数据中包含的类别数量)。 - HCL
显示剩余5条评论

-1

由于您似乎有一个动态列组,因此您可能会将其放入列中:

Fields!ColHeading.Value |Total
Fields!DataValue.Value   | =SUM(Fields!DataValue.Value)

如果您喜欢图形界面,请右键单击总值字段并单击“表达式”。在弹出窗口中,展开“常用函数”并单击“聚合”,在项目窗口中双击“求和”。输入或单击数据字段,您将得到类似于以下内容:Filled out Expression Window

点击“确定”,您就可以开始了!


谢谢您的回答,但它并没有回答我的问题 - 我需要知道如何告诉报表引擎合并动态创建的单元格以进行总行,以便总单元格跨越所有自动创建的列。就像 HTML 中的 ColSpan 一样,用于总行。 - HCL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接