首页 > 解决方案 > 将主报表中相同参数的值设置或传递给SSRS中的多个子报表

问题描述

我有两个具有不同查询的子报表,我希望用户搜索的两列具有不同的名称,我无法更改列名。

我想设置具有不同值的参数,并在主报告中只使用两个参数。意思是主报告参数@Name @Employee ID

子报表 1

子报表 2

我已经创建了参数,但主报表现在有四个参数,每个子报表两个。

同样,我希望主报告只使用两个参数并为两个子报告工作。这可能吗?

查询SELECT Empl_ID,Name,P,Stat_Type,Dept_ID FROM HIST_NAME WHERE (P='50') AND (Stat_Type = 'Completed') AND (Dept_ID IN (1, 2, 3, 4, 5, 6)) OR (Dept_ID BETWEEN 573 AND 593) AND (@AllActionsEmplName IS NULL) AND (@AllActionsEmplID IS NULL) OR (Dept_ID BETWEEN 573 AND 593) AND (@AllActionsEmplID IS NULL) AND (Name LIKE '%' + @AllActionsEmpName + '%') OR (Dept_ID BETWEEN 573 AND 593) AND (@AllActionsEmplName IS NULL) AND (Empl_ID LIKE '%' + @AllActionsEmplID + '%') OR (Dept_ID BETWEEN 573 AND 593) AND (Name LIKE '%' + @AllActionsEmplName + '%') AND (Empl_ID LIKE '%' + AllActionsEmplID + '%')

注意:查询生成器以这种方式重新格式化

标签: sql-serverreporting-services

解决方案


我不确定您是如何在子报告中得到 4 个参数的。您需要做的就是在每个子报表的参数属性中,选择左侧子报表的参数名称以及您要传入的主报表中的参数名称。

如果这没有帮助,请发表评论,我将添加更完整的解决方案。

从 OP 反馈后编辑

在这个简单的示例中,我创建了 2 个子报表。它们实际上是相同的,但都采用不同的参数名称。他们返回的数据不相关。

第一个子报表采用两个参数@country 和@category,如下所示。 在此处输入图像描述

数据在 country = @country 和 category = @category 的地方被过滤

第二个子报表几乎相同,但这个子报表有两个参数,称为@region 和@section。数据在 country = @region 和 category = @section 的地方被过滤

在此处输入图像描述

然后我添加了一个主报告。这没有数据集,但有两个参数,@MasterP1 和@MasterP2。这些可以被称为任何东西,甚至与其中一个子报告相同,但为了清楚起见,我称它们为不同的东西。

我添加了两个子报表,一个用于我们创建的每个子报表。

我设置参数属性如下

第一个子报告

在此处输入图像描述

其中 A 是子报表期望的参数名称,B 是我们要传递的值的名称(在本例中是来自主报表的参数)

第二份子报告

在此处输入图像描述

完全相同的事情在这里适用,即使子报表具有不同的参数名称,我们仍然将相同的值传递给它。所以只有名称列发生变化。

而已...


推荐阅读