我在SSRS中有一些参数值,并且我正在基于这些参数填充数据集。但是,我有一个名为Employee的参数,具有雇员名称和代码值。此Employee的第一个值为'ALL',因此当用户单击全部,将显示所有员工详细信息。
我想根据员工的值更改查询,即,如果它是“ ALL”,那么它的where条件是不同的,而对于员工代码则是where条件不同的
我在stackoverflow中检查了类似的问题,他们说要使用If条件,但是我正在连接到AS400,并且查询设计器中如果If条件未被接受。
问题出在我的查询的这一部分,SLSMCD是业务员代码。此查询适用于ALL 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 = ?)
我尝试使用AND和OR条件将事物与()分组。例如
(SLSMCD IN (SELECT WEMEMCD FROM VHTEMPL VHTEMPL_1
WHERE (WEMEMCD = ? and ? <> 'ALL')
但是SSRS会自动删除()并使其像(WEMEMCD =?)AND(?<>'ALL)
答案 0 :(得分:0)
我使用数据集中的表达式解决了这个问题
在数据集中 去选择查询参数 转到要设置条件的相应字段
=IIF(Parameters!PRSalesManCode.Value <>
"ALL",Parameters!PRSalesManCode.Value,Parameters!PRSalesMan.Value)
这里的参数!PRSalesMan.Value是我从ASPX页面发送的值,并存储为隐藏参数
Parameters!PRSalesManCode.Value是报表下拉菜单中的选定值
SO i与ALL进行比较,并根据条件传递值
注意:我观察到AS400中没有if概念,因此在ssrs中形成数据集时我们不能在查询中使用它 (不确定)