【问题标题】:SSRS - How to continue data to next column?SSRS - 如何将数据继续到下一列?
【发布时间】:2012-06-04 14:12:25
【问题描述】:

我需要报告“员工姓名”和“年龄”,但我不需要将姓名继续到下一页;我需要继续到下一栏。

应该是这样的:

_________________________________________________
| Employee Name | Age | Employee Name | Age     |
|_______________|_____|_______________|_________|

任何人都可以发送管理此问题的报告吗?我正在使用 Microsoft 报告服务。

【问题讨论】:

  • 很难看出你想要什么:“继续到下一栏”是什么意思?此外,如果您告诉我们您到目前为止自己尝试过什么以及为什么没有奏效,也会有所帮助。

标签: reporting-services


【解决方案1】:

您想要一份多栏的报告。

在“布局”选项卡上,右键单击没有任何报表对象的位置,然后选择“属性”。单击“布局”选项卡并将列数设置为页面上所需的列数 - 在您的示例中为 2。这将为您提供一个用于在左侧布置报告对象的列和一个灰色列右侧将是您在左侧的列将重复的位置。

但是,这里有几个技巧:

  • 您的列必须适合页面,否则您将无法获得任何列。例如,如果您的布局设置默认为 1 厘米间距和 2.5 厘米左右边距,那么在 A4(21 厘米宽)页面上,您的列必须小于 7.5 厘米。否则,您只会得到一列,因为页面上放不下两列。
  • 您的设计器中的报表呈现器不支持多列,因此您只会在设计器中看到一列。 HTML 呈现器也不支持多列,当部署到 Reporting Services 服务器并显示为网页时,您只会看到报告的一列。您需要将报表输出到支持多列的渲染器,例如 PDF 或打印机,才能真正看到多列报表中的列。

更新 - 使用表格伪造多列报告

如果做不到这一点,要让它以独立于渲染器的方式显示,就像你尝试过的那样,使用带有两个表的 hack,但诀窍是以交替的方式隐藏行。

要实现此技巧,请并排创建两个表,它们都指向您的数据集。在第一个表的 Detail 行中,Visibility-Hidden 属性使用以下公式:

=iif((RowNumber(Nothing) Mod 2) = 0, True, False)

在第二个表的 Detail 行,Visibility-Hidden 属性使用相反的公式:

=iif((RowNumber(Nothing) Mod 2) = 1, True, False)

这意味着第一个表将打印每个奇数行,第二个表将打印每个偶数行,从而有效地为您提供多列输出。

对于需要两列以上的表格可见性的通用解决方案,请使用以下公式:

=iif((RowNumber(Nothing) Mod TOTALCOLUMNS) = THISCOLUMN, True, False)

在哪里: TOTALCOLUMNS 是总列数 THISCOLUMN 是此表表示的列号,从零开始(即第一列是 0,第二列是 1,等等)

例如,五列输出中第三列的表将 Visibility-Hidden 属性设置为:

=iif((RowNumber(Nothing) Mod 5) = 2, True, False)

请注意,这与真正的多列输出略有不同,因为它从左到右而不是在页面向下读取,然后像真正的多列那样换行到右侧列。但是,它具有在每个渲染器中正确渲染的优点。

您可以通过从 InteractiveSize-Height 属性计算出您可以在页面上容纳多少行并在左表中显示这些列,然后在右表中显示其余列等来调整此方法以执行真正的多列在整个报告中,但这可能很脆弱,具体取决于渲染器和更改页面布局设置(如边距)。上述方法简单有效。

【讨论】:

  • 我使用“SQL Server 商业智能开发工作室”它是一个“SQL 报表服务”,我不知道“布局选项卡”在哪里
  • 布局选项卡是报表的设计界面,您可以在其中将报表对象(表格、文本框等)添加到报表带区
  • 也许你不明白我的意思。我需要的是,当我创建此报告时,数据显示在 12 页中,每页显示有一些行,每行有 1 个 emp,我需要制作每个行有 2 emp 而不是 1 emp 以将页面减少到 6 而不是 12 所以我为此 table1 和 table2 创建表是相同的但数据不应该是相同的,问题是数据在 2 个表中重复我不需要我需要table2是table1中的连续数据。假设 page1 table1 last emp 是 20 号我需要 table2 在同一页以 emp 号 21 开头。我希望您理解并感谢您的回答
  • 哦,我按照您所说的添加了另一列,当我将其导出为 PDF 文件时,我得到了结果,没关系,但是有没有在我导出时不能在预览中显示它?
  • 哈哈,为了解决这个特殊问题,我不得不加班到很晚。为我节省了很多时间:)
【解决方案2】:

我正在尝试做 EmployeeName 和 EmployeeTitle。我试图在上面实施克里斯的解决方案。我会得到每个表中的预期值,但它们会被重复。

我做了更多的研究,最终得到了以下行可见性。

对于我使用的偶数行:

=iif(RunningValue(Fields!jobtitle.Value, CountDistinct, "EmployeesDataSet") Mod 2 = 0, True, False)

对于偶数行我使用:

=iif(RunningValue(Fields!jobtitle.Value, CountDistinct, "EmployeesDataSet") Mod 2 = 1, True, False)

行组在职称上。

来源:RowNumber for group in SSRS 2005

【讨论】:

    猜你喜欢
    • 2017-01-30
    • 1970-01-01
    • 2013-12-23
    • 2015-01-29
    • 2023-04-02
    • 2014-04-17
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多