SSRS 2008 - 来自多值参数的每个值的子报告

时间:2012-09-17 12:23:30

标签: reporting-services ssrs-2008 subreport

使用SSRS 2008 R2并想知道,是否可以为多值参数中选择的每个值生成子报告?

让我们假设您有多值参数“parameterA”,其中选择了四个值(Value1,Value2,Value3和Value4)。我想为每个值生成子报告(将值作为单个参数传递)。当然,我可以改变程序来处理多值参数,但由于性能和缓存,我真的不想这样做。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:4)

要执行此操作,您必须将子报表放入列表或Tablix中。据我所知,没有简单的方法让列表或tablix迭代多值参数中的值。它只接受数据集。

因此,我能想到的唯一解决方法是将参数拆分为数据集中的一组行,这对SQL而言可能是微不足道的。但是,如果参数的可用值来自数据集,则情况会有所改善:您可以将Tablix / list挂钩到数据集,并过滤未在参数中选择的项目。

编辑:我通过将数据集查询构建为表达式,找到了将多值参数扩展为数据集的稍微有点解决方案。假设参数@MultiParamX,该表达式将创建一个查询,该查询在一列中输出所有选定的值:

="SELECT '" 
&
 Join(Parameters!MultiParamX.Value, "' MyParam UNION ALL SELECT '")
&
"' MyParam"

这可能会生成一个查询,如下所示(为了便于阅读而重新格式化):

SELECT 'A' MyParam
UNION ALL
SELECT 'B' MyParam
UNION ALL
SELECT 'C' MyParam
-- Etc. for all selected values

这将生成一个结果集,例如:

┌─────────┐
│ MyParam │
├─────────┤
│ A       │
│ B       │
│ C       │
│ Etc.    │
└─────────┘