当将IBM DB2(AS400)作为DataSource连接时,ssrs-how要根据参数值更改查询



我在SSR中有一些参数值,我正在基于这些副标书填充数据集。无论如何,我有一个称为员工的参数,带有员工名称和代码值。是"全部",因此当用户单击全部时,显示了所有员工详细信息。

我想根据员工价值更改我的查询

我已经在Stackoverflow中检查了类似的问题,他们说如果条件但是我已连接到AS400,并且在查询设计师中不接受条件。

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

                      (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 = ?)

我尝试使用和/或条件将事物与().e.g

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

但是SSRS自动删除(),并使其像(Wememcd =?)和(?&lt;>'all)

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

在数据集中去选择查询参数转到要放置条件的各个领域

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

shere参数!prsalesman.value是我从aspx页面发送的值,并将其存储为隐藏的paraemeter

参数!prsalesmancode.value是报告下拉的选定值

因此,我将所有内容比较并根据条件

传递值

注意:我观察到AS400中没有IF概念,因此我们在SSR中形成数据集时无法在查询中使用它(不完全确定)

最新更新