Reporting services SSRS-如何将数据延续到下一列?

Reporting services SSRS-如何将数据延续到下一列?,reporting-services,Reporting Services,我需要报告“员工姓名”和“年龄”,但我不需要将姓名继续到下一页;我需要继续到下一个专栏 应该是这样的: _________________________________________________ | Employee Name | Age | Employee Name | Age | |_______________|_____|_______________|_________| 任何人都可以发送一份报告来管理它吗?我使用的是Microsoft report service

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

应该是这样的:

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

任何人都可以发送一份报告来管理它吗?我使用的是Microsoft report service。

您想要一份多栏报告

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

但是,这里有几个技巧:

  • 您的列必须适合页面,否则将无法获得任何列。例如,如果布局设置的默认间距为1cm,左右边距为2.5cm,则A4(21cm宽)页面上的列必须小于7.5cm。否则,您将只获得一列,因为两列不适合页面
  • 设计器中的报表呈现程序不支持多列,因此在设计器中只能看到一列。HTML呈现程序也不支持多列,当部署到reporting services服务器并显示为网页时,您将只看到报表的一列。您需要将报表输出到支持多列的渲染器,如PDF或打印机,以便实际查看多列报表中的列
更新-使用表格伪造多列报告

如果不能做到这一点,要让它以您想要的方式独立于渲染器显示,就需要使用两个表的hack,就像您尝试过的那样,但技巧是以交替的方式隐藏行

要实现这种攻击,请并排创建两个表,这两个表都指向您的数据集。在第一个表的“详图”行上,对于“可见性隐藏”特性,请使用以下公式:

=iif((RowNumber(Nothing) Mod 2) = 0, True, False)
在第二个表的“详图”行上,对于“可见性隐藏”特性,请使用相反的公式:

=iif((RowNumber(Nothing) Mod 2) = 1, True, False)
=iif((RowNumber(Nothing) Mod TOTALCOLUMNS) = THISCOLUMN, True, False)
这意味着第一个表将打印每一个奇数行,第二个表将打印每一个偶数行,有效地提供了多列输出

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

=iif((RowNumber(Nothing) Mod 2) = 1, True, False)
=iif((RowNumber(Nothing) Mod TOTALCOLUMNS) = THISCOLUMN, True, False)
其中: TOTALCOLUMNS是列的总数 THISCOLUMN是此表表示的列号,以零为基础(即第一列为0,第二列为1,以此类推)

例如,五列输出中第三列的表的“可见性隐藏”特性设置为:

=iif((RowNumber(Nothing) Mod 5) = 2, True, False)
请注意,这与true multi column的输出略有不同,因为它从左到右读取,而不是像true multi column那样在包装到右侧列之前向下读取页面。但是,它具有在每个渲染器中正确渲染的优点


通过从InteractiveSize Height属性计算页面上可以容纳的行数,并在整个报告中显示左侧表中的列数,然后在右侧表中显示其余列数,依此类推,您可以调整此方法以实现真正的多列,但这可能很脆弱,具体取决于渲染器和更改页面布局设置比如利润。上述方法简单有效

我正在尝试做EmployeeName和EmployeeTitle。我试图实现上面Chris的解决方案。我会得到每个表中的期望值,但它们会被复制

我做了更多的研究,最后得出了以下关于行可见性的结论

对于偶数行,我使用:

=iif(RunningValue(Fields!jobtitle.Value, CountDistinct, "EmployeesDataSet") Mod 2 = 0, True, False)
对于奇偶行,使用:

=iif(RunningValue(Fields!jobtitle.Value, CountDistinct, "EmployeesDataSet") Mod 2 = 1, True, False)
rowgroup的职位为jobtitle


来源:

很难看出你想要什么:你说的“继续到下一个专栏”是什么意思?另外,如果您告诉我们您自己到目前为止尝试了什么以及为什么不起作用,也会有所帮助。我使用的是“SQL Server Business Intelligence Development Studio”这是一个“SQL报表服务”我不知道“布局选项卡”在哪里布局选项卡是报表的设计图面,您可以在其中添加报表对象(表、文本框等)对报告乐队来说也许你不明白我的意思。。我所需要的是,当我创建这份报告时,12页中显示的数据每页显示有一些行每行有1个emp我需要使每行有2个emp而不是1个emp,以将页面减少到6个而不是12个,因此我创建表1和表2是相同的,但数据不应相同,问题是在2个表中重复的数据我不需要,我需要的是表2是表1中的连续数据。假设第1页表1上一个emp是20号,我需要表2在同一页以emp 21号开始。我希望你能理解,谢谢你的回答。我按照你说的做了,添加了另一个专栏,当我将它导出到PDF文件时,我得到了结果。没关系,但是否有任何东西可以在预览中显示它,而不是在我导出它的时候?哈,我不得不工作到很晚才解决这个特殊的问题。帮我节省了很多时间:)