【问题标题】:How to create totals row for grouped columns如何为分组列创建总计行
【发布时间】:2012-04-30 18:14:24
【问题描述】:

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

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

请注意,计算总数不是我的问题。我只是在寻找一种方法来告诉报表查看器合并通过特定行的列组自动创建的单元格。

更新
可悲的是,到目前为止,我还没有找到解决方案。此外,我在报告中也遇到了同样的问题,我必须在合并列中添加行组的总数。

|------|-------|
|row 1 |       |
|------| Row-  |
|row 2 | Group |
|------| Total |
|row 3 |       |
|------|-------|

我发现这是一种很常见的显示总数的方式。 这是不可能的,还是我遗漏了一些明显的东西?

更新2
这是我的意思的截图:

中间有一组。这会在运行时创建 n 列。我想要做的是跨越所有动态创建的列的“跨越类别总数”。这意味着,单元格的柱跨度是n。只有一个单元格,在这个单元格中,我将显示所有类别的总数。它与报表查看器在组顶部自动创建的类似。

【问题讨论】:

  • 动态列,这是某种支点(例如财政年度的列头,以及该财政年度花费的美元的数据值)吗?
  • @Pulsehead:是的,正如您所提到的,有些报告带有转轴年份。例如。 col1 = 2005, col2=2006,col3=2007 并且列组总计应显示 col1-col3 的总计。在其他报告中,还有其他分组列,例如办公地点、月份名称等。列的数量不固定,取决于要可视化的数据。

标签: reporting-services ssrs-2008 rdlc rdl report-viewer2010


【解决方案1】:

不知道你是否找到了这个问题的答案,但如果没有……

通常,按列分组的数据的最后一列和按行分组的数据的最后一行应为总计...

但是,根据范围和分组级别,您可以通过将 Tablix 嵌入到外部 Tablix 中,然后在外部 Tablix 中添加一行来汇总那里的数据,从而实现您想要的效果.

我在矩形和列表中使用了多个数据区域来操作各种布局。如果这些范围不合作,您只需要使用范围,并可能调整您的输出数据(存储过程中的组的总和/平均值)。让我知道它是否能解决您的问题。

【讨论】:

  • 现在试试添加截图,应该可以了。
【解决方案2】:

据我所知,rdlc 是您在 Report Wizard 或 Visual Studio 上编辑的报告文件,而 rdl 是在 BIDS 上开发的报告文件。

我不知道这是否适用于 rdlc 文件,因为我只使用 BIDS,但我认为值得一试:

  1. 在行组选项卡(左下角)上右键单击您的组并 选择添加总计 -> 之后,它将添加一个总计行。
  2. 暂时将总和单元格(总数)复制到其他位置 报告(因为如果你不这样做,下一步会删除它)
  3. 使用 SHIFT,逐个选择要合并的行上的单元格(不要 选择行本身)
  4. 右键单击并选择合并单元格
  5. 粘贴您在第 2 步中复制的总和单元格

结果(希望你能看到):

编辑:

回答您的问题,是的,我确信它可以完成,因为我做了几次,而且您在打印屏幕上也看到了。 我正在为我的行粘贴 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 允许合并分组的单元格吗?这对进一步搜索有很大帮助...
  • 但是你想要什么?所有行上 col1 + col2 + col3 的总和?只需将表达式从 =Sum(Fields!col1.Value) 更改为 =Sum(col1+col2+col3)
  • Diego:如果我理解你的解决方案是正确的,那不是我要找的。您正在添加行,这意味着您正在尝试解决我绘制的第二个图形的问题。如您所见,有动态创建的行(通过一组),然后在行的末尾,有一个单元格跨越组的所有行以显示总数。如果您在 tablix 中添加行组,报表查看器会在组的开头为您创建这样的合并单元格。我想最后有这样一个合并的单元格。也许您对如何解决这个问题有进一步的想法?我添加了一张图片。
  • 没有。这不是关于计算的问题,这很好用。它是关于如何合并组中动态创建的单元格。我在我的问题中添加了一张图片。也许这有助于澄清问题(抱歉,我的母语不是英语,因此,我的帖子可能难以解释)。
  • 嗯,我想我明白了。你是如何生成动态列的? PS:你来自哪里?
【解决方案3】:

由于看起来您有一个动态列组,您可能会放入列中:

字段!ColHeading.Value |总计
字段!DataValue.Value   | =SUM(Fields!DataValue.Value)

如果您更喜欢图形界面,请右键单击总计的值字段,然后单击表达式。在弹出窗口中,展开 Common Functions 并单击 Aggregate,然后在 Item 窗口中双击 Sum。输入或单击数据字段,您将得到如下内容:。

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

【讨论】:

  • 感谢您的回答,但它没有回答我的问题 - 我必须知道,如何告诉报表引擎合并为总行动态创建的单元格,以便总单元格跨越所有自动创建的列。类似于 HTML 中的 ColSpan 用于总计行。
猜你喜欢
  • 1970-01-01
  • 2021-09-27
  • 2022-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-01
  • 1970-01-01
  • 2020-08-13
相关资源
最近更新 更多