1

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

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

感谢您的任何建议。

4

1 回答 1

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.    │
└─────────┘
于 2012-09-17T14:12:23.440 回答