sql-server - 将主报表中相同参数的值设置或传递给SSRS中的多个子报表
问题描述
我有两个具有不同查询的子报表,我希望用户搜索的两列具有不同的名称,我无法更改列名。
我想设置具有不同值的参数,并在主报告中只使用两个参数。意思是主报告参数@Name @Employee ID
子报表 1
- 具有列名称和 Empl_ID
- 参数 @Name @Empl_ID
子报表 2
- 具有 Full_Name 和 Employee_ID 列
- 参数 @Full_Name @Employee_ID
我已经创建了参数,但主报表现在有四个参数,每个子报表两个。
同样,我希望主报告只使用两个参数并为两个子报告工作。这可能吗?
查询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 + '%')
注意:查询生成器以这种方式重新格式化
解决方案
我不确定您是如何在子报告中得到 4 个参数的。您需要做的就是在每个子报表的参数属性中,选择左侧子报表的参数名称以及您要传入的主报表中的参数名称。
如果这没有帮助,请发表评论,我将添加更完整的解决方案。
从 OP 反馈后编辑
在这个简单的示例中,我创建了 2 个子报表。它们实际上是相同的,但都采用不同的参数名称。他们返回的数据不相关。
第一个子报表采用两个参数@country 和@category,如下所示。
数据在 country = @country 和 category = @category 的地方被过滤
第二个子报表几乎相同,但这个子报表有两个参数,称为@region 和@section。数据在 country = @region 和 category = @section 的地方被过滤
然后我添加了一个主报告。这没有数据集,但有两个参数,@MasterP1 和@MasterP2。这些可以被称为任何东西,甚至与其中一个子报告相同,但为了清楚起见,我称它们为不同的东西。
我添加了两个子报表,一个用于我们创建的每个子报表。
我设置参数属性如下
第一个子报告
其中 A 是子报表期望的参数名称,B 是我们要传递的值的名称(在本例中是来自主报表的参数)
第二份子报告
完全相同的事情在这里适用,即使子报表具有不同的参数名称,我们仍然将相同的值传递给它。所以只有名称列发生变化。
而已...
推荐阅读
- c# - 是否可以使用另一个 c# 项目运行 C# 项目
- video - Using -ss and -to to play a video using ffplay
- compiler-errors - Imagemagick 没有此图像格式“PNG”Ubuntu 20.04 的解码委托
- scripting - Ping 解析问题
- ios - Iphone x 及更高版本的安全区域内的图像选择器 cameraoverlay 无法正常工作
- kubernetes - 无头服务在 Kubernetes 中是否“原子”更新?
- google-cloud-platform - 使用 n2-standard-2 机器类型运行数据流作业,数据流作业是否可以随时仅使用 2 个 vCPU 运行,或者它可以自动扩展到配额限制
- c++ - 子类运算符 << 重载 C++
- shapley - shapley-values 如何解释我的模型中没有特征?
- amazon-web-services - 如何使用 Java SDK 和 SSO 向 AWS 进行身份验证