SSRS-在将IBM DB2(AS400)作为数据源连接时,如何基于参数值更改查询

问题描述 投票:0回答:1

我在SSRS中有一些参数值,我根据这些参数来填充数据集。但是我有一个名为Employee的参数,其中包含员工姓名和代码值。此Employee的第一个值是'ALL',因此当用户单击ALL时,显示所有员工详细信息。

我想根据员工价值更改我的查询,即如果它是“全部”,那么它是一个不同的条件和员工编码不同的条件

我已经在stackoverflow中检查了类似的问题,他们说要使用If条件但是我连接到AS400,并且如果查询设计器中没有接受条件。

问题出在我的查询的这一部分,SLSMCD是销售员代码。这个查询适用于所有员工,即适用于所有员工)

                      (SLSMCD IN
                         (SELECT        WEMEMCD
                           FROM            VHTEMPL VHTEMPL_1
                           WHERE        (WEMEMCD = ?) OR
                                                     (WEMTLCD = ?) OR
                                                     (WEMGLCD = ?) OR
                                                     (WEMBHCD = ?) OR
                                                     (WEMTCMCD = ?) OR
                                                     (WEMGCMCD = ?) OR
                                                     (WEMBCMCD = ?) OR
                                                     (WEMHOTLCD = ?) OR
                                                     (WEMHOGLCD = ?) OR
                                                     (WEMHHODCD = ?) OR
                                                     (WEMGHODCD = ?)))

现在对于个别员工来说,查询应该是

 (SLSMCD IN
 (SELECT WEMEMCD FROM VHTEMPL VHTEMPL_1 WHERE (WEMEMCD = ?)

我尝试使用AND和OR条件将事物与().E.g分组

(SLSMCD IN (SELECT WEMEMCD FROM            VHTEMPL VHTEMPL_1
 WHERE        (WEMEMCD = ? and ? <> 'ALL')

但SSRS自动删除()并使其像(WEMEMCD =?)AND(?<>'ALL)

db2 ssrs-2008
1个回答
0
投票

我使用数据集中的表达式解决了这个问题

在数据集中,选择查询参数转到要放置条件的相应字段

=IIF(Parameters!PRSalesManCode.Value <> 
"ALL",Parameters!PRSalesManCode.Value,Parameters!PRSalesMan.Value)

这里参数!PRSalesMan.Value是我从ASPX页面发送的值,它被存储为隐藏的参数

参数!PRSalesManCode.Value是报告下拉列表中的选定值

所以我与ALL比较并根据条件传递值

注意:我观察到AS400中没有if概念,所以我们不能在ssrs中形成datset时在查询中使用它(不完全确定)

© www.soinside.com 2019 - 2024. All rights reserved.