3

几天来我一直在与这个问题作斗争,但没有成功。我需要实现一个非常棘手的报告格式,但主要是所有数据集都需要按 1 个父级分组。我会尝试解释...

假设我们有数据集 1、数据集 2。两者都有 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]

期待这方面的讨论!

4

3 回答 3

3

有多种方法可以达到这种效果,最适合您的情况取决于您报告的详细信息。因此,我将仅提供一些我过去使用过的技术:

  1. 将两个数据集合二为一

    在查询中将数据集合并为一个是最简单的答案之一,并且适用于所有版本的 SSRS。它可以使 SQL 查询变大,但它使报表布局变得简单。

  2. 使用Lookup(...)功能

    SSRS 2008R2 添加了该Lookup(...)功能,可用于访问第二个数据集中的项目。使用起来有点尴尬,并且需要为每个要访问的字段使用单独的公式,但它对于从不同的数据集中检索一些字段非常强大。

  3. 子报告

    与原始问题中描述的方法类似,这使您可以使用一个 tablix 创建一个父项目,然后在其中放置一个子报表。子报表将被多次调用,分组项作为参数。报告的每次运行都应该只返回该组实例的报告。这可能非常强大,但维护起来很困难:您有两个地方可以更改某些内容,并且可能需要手动调整以确保列正确排列。子报表通常是运行速度最快的报表,因为它被多次调用。

[注意:StackOverflow.com 不是讨论的最佳场所。该网站的设计旨在避免讨论,并针对问题和答案,而不是讨论。]

于 2013-09-03T18:25:46.823 回答
2

我不知道这里是否有完美的解决方案。

根据您的描述,(听起来您已经朝着这个方向倾斜)您将需要一个 Dataset 为每个 distinct AccountNumber,并基于此创建一个新列表或表。

完成此设置后,您需要在每一行中嵌入不同的 Dataset 对象(即 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 及更高版本中,您可以使用LookupLookupSet来加入数据集,但这对于多个值来说会很麻烦,即使您运行的是正确的版本。

同样,根据您的数据,另一个选项是相邻组,如果您可以设法在一个数据集中获取数据...这将允许在组下的另一个旁边有不同的分组AccountName,但这是一个远景。

于 2013-09-03T18:24:43.033 回答
0

如果我们知道报告数据,例如工资单,带有贷款余额的工资单(即数据集 1 用于工资单,数据集 2 用于贷款),那就太好了。

无论如何,格式将取决于报告的所需输出。即,如果您计划在报告中生成类似 sum 的计算,并且结果输出将是每个数据集还是两个数据集。

假设您需要求和计算,如果计算结果是每个数据集,那么选项 2 很好,如果计算结果是总计(数据集 1 + 数据集 2),那么选项 1 更好。

如果不需要计算或总结果,两者都可以。

于 2013-09-03T18:19:00.433 回答