在 SSRS 中访问主报表中的子报表数值

3
我有一个子报告内的主要报告
使用报表服务,如何从子报告中获取值到主报告?
我正在调用子报告,基于主报告的tablix数据。例如,我在主报告上有一个tablix,将@Number值传递给子报告以获取一些子记录,并希望将总值的总和返回到主报告。我该如何实现这个目标!
我尝试通过创建一个数据集来做到这一点,但没有帮助我。每次都得到0计数。
我在主报告上使用下面的表达式,通过在主报告上创建子报告数据集:
=COUNTROWS("SubReportDataset")

然而,在报告中我没有找到任何可行的解决方案,请帮忙。

1个回答

3

通过直接引用子报表来完成

据说,您可以通过以下方式访问子报表项目

[Reports]![YourReportName]![YourSubReportName]![TheValueFromTheSubReportYouWantToReference]

我以前看到过类似的内容,但我从未能够始终如一地获得reportItems引用(或这种类型的内容),就像我想象的那样。

当然要记住,您正在提到一个子报表,该报表可能重复多次,您将使用上面的引用来拉取给定子报表的哪个实例?我认为你会发现这更麻烦,得不偿失。

我的建议

如我上面所述,如果不是不可能而且难以靠谱,直接引用子报表可能会很困难。相反,您正在声明您正在传递@Number到您的子报表中。如果您正在使用视图或函数在子报表中基于@Number拉取数据,则可以轻松地在主报表中嵌入相同的逻辑加上聚合函数。这样,您就可以引用主查询中的聚合值,该查询正在使用与子报表相同的计算和数据。

如果您的子报表没有使用视图、函数或共享数据集,并且您无法(或选择不使用)视图、函数或共享数据集(请注意,我列出了两次以强调),则必须在主报表中重新生成SQL查询并调用查询逻辑并在主报表中进行聚合。这可能是一个维护噩梦(我正在积极尝试在自己的组织中将其最小化),因为您必须在两个位置维护相同的SQL逻辑。话虽如此,根据子报表中SQL查询的复杂程度,这可以轻松完成。

如果您有问题,请将它们作为评论留下,我会尽力帮助。


是的,我在主报表上有一个以“Number”列为分组的分组。此外,我可以使用LookupSet和Join以“102,103,104”的格式获得所有数字,但我又卡住了!我该如何将这个值传递给主报表的数据集?例如:我在主报表的一个文本框中设置了“102,103,104”,并创建了一个新的数据集来获取总数。但我不知道如何将这个值作为参数传递给新的数据集。请帮忙,非常感谢您的答复! - Pedram
您无法将文本框中的值传递到数据集中。数据集在报表主体呈现之前运行。但是,您可以这样做:假设数据集A包含数字。向数据集A添加CTE或临时表,其中包含与数据集A检索的所有数字值相关的子报表中的相同数据。然后,您可以加入到该CTE或临时表中,在数据集A中运行聚合,并在记录级别上对该CTE或临时表进行分组和总计(然后可以根据需要在tablix中进行分组和总计)。这有意义吗? - Christopher Brown
是的,我明白了,昨天我也做了你今天提到的同样的事情。我创建了不同的数据集,并将子报表数据集的逻辑混合到新创建的数据集中,只返回了我的目标聚合值。不过,报告服务应该提供一些获取主报告上的子报告值的方法......无论如何,我非常感谢你...... - Pedram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接