我一直在与这个问题作斗争几天没有成功。我有一个非常棘手的报告格式我需要实现,但主要的是所有数据集都需要按1个父组分组。我会尝试解释......
假设我们有dataset1,dataset2。两者都将AccountNumber作为公共字段(父级)。
我需要在报告的格式/布局中使用这两个数据集,但是通过AccountNumber将它们组合在一起,就像这样。
[Report Header Data]
[AccountNumber Group]
Dataset1
Dataset2
[end AccountNumber Group]
实现这一目标的最佳方法是什么?报告的格式一直是分组的主要障碍,因此我将数据拆分为多个数据集,按帐户编号将它们组合在一起,然后在报告中为每个数据集创建自定义格式。报告的流程可能是这样的
[Report Header Data]
[AccountNumber Group]
[tablix1]
Dataset1
[tablix1]
[tablix2]
Dataset2
[tablix2]
[end AccountNumber Group]
期待对此的讨论!
答案 0 :(得分:2)
有多种方法可以达到此效果,最适合您情况的方法取决于报告的详细信息。所以我将介绍一些我过去使用过的技术:
将两个数据集合并为一个
将数据集连接到查询中的数据集是最简单的答案之一,适用于所有版本的SSRS。它可以使SQL查询变大,但它使报表布局变得简单。
使用Lookup(...)
功能
SSRS 2008R2添加了Lookup(...)
功能,可用于访问第二个数据集中的项目。使用它有点尴尬,并且需要为每个要访问的字段使用单独的公式,但它对于从不同的数据集中检索一些字段非常有用。
子报告
与原始问题中描述的方法类似,这允许您使用一个Tablix创建父项目,然后在其中放置子报表。子报表将被多次调用,并将Grouping项作为参数。报告的每次运行应仅返回该组实例的报告。这可能非常强大,但维护很困难:您有两个地方可以更改某些内容,并且可能需要手动调整以确保列正确排列。子报表通常是最快的报表,因为它被多次调用。
[注意:StackOverflow.com不是讨论的最佳场所。该网站的设计旨在避免讨论,并针对问题&答案,而不是讨论。]
答案 1 :(得分:1)
我不知道这里是否有完美的解决方案。
根据你的描述,(听起来你已经倾向于这个方向了)你需要为每个不同的AccountNumber
提供一个数据集,并根据这个创建一个新的列表或表。
完成此设置后,您需要在每行中嵌入不同的数据集对象(即tablix1,tablix2)。
这里的主要问题是在Tablix中嵌入Tablix时你不能使用多个数据集,所以这让我觉得你可能需要一个子报告解决方案 - 这样子报告可以采用AccountNumber
参数,每个使用不同的数据集。
类似于:
[Report Header Data]
[AccountNumber Group]
[subreport1]
[tablix1]
Dataset1
[tablix1]
[subreport1]
[subreport2]
[tablix2]
Dataset2
[tablix2]
[subreport2]
[end AccountNumber Group]
这将根据需要重复每个AccountNumber
。
如果不确切知道您的数据是什么样子很难说,但在2008R2及更高版本中,您可以使用Lookup和LookupSet来加入数据集,但这对于多个值来说会很麻烦,即使你正在运行正确的版本。
同样,根据您的数据,如果您可以设法在一个数据集中获取数据,则另一个选项是相邻组...这将允许在AccountName
组下具有不同的分组,但是这是一个很长的镜头。
答案 2 :(得分:0)
如果我们知道报告数据,例如Payslip,带有贷款余额的工资单(即薪资单数据集1和贷款数据集2),那就太棒了。
无论如何,格式将取决于报告所需的输出。即如果您计划生成计算,如报表中的sum,以及结果输出是按数据集还是两个数据集。
假设你需要总和计算,如果计算结果是每个数据集,那么选项2是好的,如果计算结果是总数(数据集1 +数据集2)那么选项1更好。
如果不需要计算或总结果,则可以这样做。