有没有一种方法可以将计算表达式用作 SSRS 中的参数?
Is there a way I can use a calculated expression as a parameter in SSRS?
我无法像使用两个非计算参数那样在数据集中写入参数。如果我以错误的方式解决这个问题,非常感谢任何帮助让我走上正确的轨道。
数据集查询
SELECT
Inmast.fpartno
, inmast.fdescript
, inmast.fonhand
, inmast.fnonnetqty
, inmast.fcstscode
, inmast.fsource
, inmast.fprodcl
, inprod.fpc_desc
, inmast.fsafety
, inmast.fbook
, inmast.fonorder
, inmast.fproqty
, inmast.freordqty
From inmast
inner join inprod
on inmast.fac + inmast.fprodcl = inprod.fac + inprod.fpc_number
Where inmast.fcstscode = @Code and inmast.fsource = @Source
计算表达式
(inmast.fonhand
+ inmast.fonorder
+ inmast.fproqty
- inmast.fbook
- inmast.fnonnetqty
- inmast.fsafety < 0
) = @CalculatedExpression
您不能使用数据集中的值来创建参数值。 Parameter 用于创建 DataSet,因此参数的值将不可用。
我相信这会完成您想要做的事情。首先,您的新查询是:
SELECT
Inmast.fpartno
, inmast.fdescript
, inmast.fonhand
, inmast.fnonnetqty
, inmast.fcstscode
, inmast.fsource
, inmast.fprodcl
, inprod.fpc_desc
, inmast.fsafety
, inmast.fbook
, inmast.fonorder
, inmast.fproqty
, inmast.freordqty
From inmast
inner join inprod
on inmast.fac + inmast.fprodcl = inprod.fac + inprod.fpc_number
Where inmast.fcstscode = @Code and inmast.fsource = @Source
and CASE WHEN
(inmast.fonhand
+ inmast.fonorder
+ inmast.fproqty
- inmast.fbook
- inmast.fnonnetqty
- inmast.fsafety
) < 0 THEN 0 ELSE 1 END = @CalculatedValue
接下来,您将为名为@CalculatedValue 的新参数创建两个默认值。
- label "Less than 0" and value 0
- label "More than 0" and value 1
发生的情况是,如果您的计算总和小于 0,则 case 语句将 return 0。如果 >= 0,它将 return 1。您的 @CalculatedValue 将只是匹配该值以适当地过滤您的结果。
我无法像使用两个非计算参数那样在数据集中写入参数。如果我以错误的方式解决这个问题,非常感谢任何帮助让我走上正确的轨道。
数据集查询
SELECT
Inmast.fpartno
, inmast.fdescript
, inmast.fonhand
, inmast.fnonnetqty
, inmast.fcstscode
, inmast.fsource
, inmast.fprodcl
, inprod.fpc_desc
, inmast.fsafety
, inmast.fbook
, inmast.fonorder
, inmast.fproqty
, inmast.freordqty
From inmast
inner join inprod
on inmast.fac + inmast.fprodcl = inprod.fac + inprod.fpc_number
Where inmast.fcstscode = @Code and inmast.fsource = @Source
计算表达式
(inmast.fonhand
+ inmast.fonorder
+ inmast.fproqty
- inmast.fbook
- inmast.fnonnetqty
- inmast.fsafety < 0
) = @CalculatedExpression
您不能使用数据集中的值来创建参数值。 Parameter 用于创建 DataSet,因此参数的值将不可用。
我相信这会完成您想要做的事情。首先,您的新查询是:
SELECT
Inmast.fpartno
, inmast.fdescript
, inmast.fonhand
, inmast.fnonnetqty
, inmast.fcstscode
, inmast.fsource
, inmast.fprodcl
, inprod.fpc_desc
, inmast.fsafety
, inmast.fbook
, inmast.fonorder
, inmast.fproqty
, inmast.freordqty
From inmast
inner join inprod
on inmast.fac + inmast.fprodcl = inprod.fac + inprod.fpc_number
Where inmast.fcstscode = @Code and inmast.fsource = @Source
and CASE WHEN
(inmast.fonhand
+ inmast.fonorder
+ inmast.fproqty
- inmast.fbook
- inmast.fnonnetqty
- inmast.fsafety
) < 0 THEN 0 ELSE 1 END = @CalculatedValue
接下来,您将为名为@CalculatedValue 的新参数创建两个默认值。
- label "Less than 0" and value 0
- label "More than 0" and value 1
发生的情况是,如果您的计算总和小于 0,则 case 语句将 return 0。如果 >= 0,它将 return 1。您的 @CalculatedValue 将只是匹配该值以适当地过滤您的结果。