使用SSRS 2008 R2并想知道,是否可以为多值参数中选择的每个值生成子报告?
让我们假设您有多值参数“parameterA”,其中选择了四个值(Value1,Value2,Value3和Value4)。我想为每个值生成子报告(将值作为单个参数传递)。当然,我可以改变程序来处理多值参数,但由于性能和缓存,我真的不想这样做。
感谢您的任何建议。
答案 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. │
└─────────┘