【问题标题】:SSRS Report Repeating Columns across multiple pagesSSRS 报告跨多个页面的重复列
【发布时间】:2018-04-18 15:49:15
【问题描述】:

作为一个非常简化的示例,假设我有以下数据集,我正在尝试从以下数据集创建 SSRS 报告(.rdl 文件):

TabOrdinal  TabName     EndDate     Value
1           First Tab   1/1/2018    141
1           First Tab   1/1/2018    297
1           First Tab   1/1/2018    309
1           First Tab   1/1/2018    705
1           First Tab   1/1/2018    398
1           First Tab   1/2/2018    309
1           First Tab   1/2/2018    753
1           First Tab   1/2/2018    641
1           First Tab   1/2/2018    806
1           First Tab   1/2/2018    177
1           First Tab   1/2/2018    503
1           First Tab   1/3/2018    653
1           First Tab   1/3/2018    717
1           First Tab   1/3/2018    969
1           First Tab   1/3/2018    631
1           First Tab   1/3/2018    614
1           First Tab   1/3/2018    160
1           First Tab   1/4/2018    463
1           First Tab   1/4/2018    997
1           First Tab   1/4/2018    87
1           First Tab   1/4/2018    378
1           First Tab   1/4/2018    972
1           First Tab   1/4/2018    212
2           Second tab  1/4/2018    873
2           Second tab  1/4/2018    525
2           Second tab  1/4/2018    693
2           Second tab  1/4/2018    48
2           Second tab  1/4/2018    20
2           Second tab  1/4/2018    685
2           Second tab  1/4/2018    688

我在我的报告中创建了以下分组:

顶级行组:

Name: Tab
Group On: [TabName]
Page Breaks: Between Each Group

在代码中:

<TablixMember>
  <Group Name="Tab">
    <GroupExpressions>
      <GroupExpression>=Fields!TabName.Value</GroupExpression>
    </GroupExpressions>
    <PageBreak>
      <BreakLocation>Between</BreakLocation>
    </PageBreak>
    <PageName>=Fields!TabName.Value</PageName>
  </Group>
  <SortExpressions>
    <SortExpression>
      <Value>=Fields!TabOrdinal.Value</Value>
    </SortExpression>
  </SortExpressions>
  <TablixMembers>
  ...
  </TablixMembers>
</TablixMember>

还有一个列组

Name: EndDate
Group On: [EndDate]

在代码中:

<TablixMember>
  <Group Name="EndDate">
    <GroupExpressions>
      <GroupExpression>=Fields!EndDate.Value</GroupExpression>
    </GroupExpressions>
  </Group>
  <SortExpressions>
    <SortExpression>
      <Value>=Fields!EndDate.Value</Value>
    </SortExpression>
  </SortExpressions>
  <TablixMembers>
    <TablixMember />
  </TablixMembers>
</TablixMember>

现在,鉴于我提供的示例数据,我希望发生的事情是,我的报告看起来会如下所示:

Tab1:

1/1/2018       1/2/2018      1/3/2018     1/4/2018
<data>         <data>        <data>       <data>

Tab2:

1/4/2018
<data>

但是,我不知道为什么,但我的第二个选项卡包含第一个选项卡上存在的所有相同日期的空列,因此第二个选项卡如下所示:

Tab2:

<empty column>       <empty column>     <empty column>     1/4/2018
<empty column>       <empty column>     <empty column>     <data>

我怎样才能让报告知道重置每个选项卡的日期列?

我希望这是有道理的,但如果没有,请告诉我,我会尝试进一步解释。

【问题讨论】:

  • 报告设计的屏幕截图更有助于确定分组不工作的原因。我从来不需要通过编辑 XML 来生成报告。
  • 抱歉,@StevenWhite,我完全同意,但我公司的政策使得截屏几乎是不可能的:/。换句话说,我的报告有 2 列。第二列是上面提到的Date 分组,所有行都使用上面提到的Tab 分组。

标签: sql-server reporting-services ssrs-2012 sql-server-data-tools rdl


【解决方案1】:

它显示在右侧的原因是因为您在EndDate 上进行分组,但结束日期在1/4/2018 之前已经有三个值。

也许您可以修改 SQL 查询并添加 ROW_NUMBER(),如下所示:

 ... ROW_NUMBER() OVER(PARTITION BY TabName ORDER BY TabName, EndDate) AS rn

然后在您的列组中,按 rn 分组。您可能需要稍微修改ROW_NUMBER 部分以确保您的值设置正确。我已修改为仅按TabName 进行分区。我想这就是你想要的。

为了隐藏没有值的文本框,我确信有多种方法可以解决。我成功的一种方法是右键单击列并转到列可见性。从那里我添加了表达式 - =ReportItems!TextBoxName.Value = NOTHING... 当然,您必须为“数据”使用正确的名称。

【讨论】:

  • 谢谢你 - 我会尝试并告诉你,但我只是想知道。在这种情况下,我会在结束日期之后有 3 列吗?你能想到,也许,我可以做一个过滤器/可见性改变来解决这个问题吗?
  • 正如我所怀疑的,第一个解决方案只是将列移动到第二个选项卡的开头,但是您使用 ReportItems 进行的编辑很有魅力!谢谢!!!
  • 太棒了!很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
相关资源
最近更新 更多