【发布时间】:2014-02-06 12:30:03
【问题描述】:
我需要为多个值重复生成相同的报告。我在新报告中使用多值参数接受这些值。我还创建了一个表格,其中包含原始报告作为子报告。 如何将用户在参数中选择的值传递给此表?我创建了一个数据集,但我无法将这些值绑定到数据集,而数据集又绑定到表。我已经阅读了几篇文章,但是,我无法让它工作。请指教。
【问题讨论】:
标签: reporting-services ssrs-2008 ssrs-tablix
我需要为多个值重复生成相同的报告。我在新报告中使用多值参数接受这些值。我还创建了一个表格,其中包含原始报告作为子报告。 如何将用户在参数中选择的值传递给此表?我创建了一个数据集,但我无法将这些值绑定到数据集,而数据集又绑定到表。我已经阅读了几篇文章,但是,我无法让它工作。请指教。
【问题讨论】:
标签: reporting-services ssrs-2008 ssrs-tablix
您将主报表中的参数绑定到子报表对象上。在子报告中,您将这些参数应用于数据集。
【讨论】:
经过几天的努力,我终于找到了解决方案on another stackoverflow post。
在这里复制它:
为此,您必须将子报表放入列表或 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. │
└─────────┘
【讨论】: