SSRS - 如何在单元格表达式中定义变量或参数?

时间:2017-04-26 15:52:06

标签: sql reporting-services reportbuilder

我需要写一个单元格表达式变量或参数,它在每个单元格中都会有所不同。我该如何设计这样的东西:

set @RowGroupName = name  ;                                            
=Sum(Fields!status.Value, @name, recursive)

Expression Editor

此解决方案的原因 - 具有重复元素的非常长的表达式。 任何帮助高度赞赏

2 个答案:

答案 0 :(得分:0)

这是一个很好的问题,我遇到了同样的问题,如果不重复上面的代码,我将无法做得更好= /

=IIF(
    IIF(
         Sum(Fields!QTDE_RET.Value) = 0,
        (Sum(Fields!QTDE_REA.Value) * (IIF(Sum(Fields!QTDE_MET.Value)=0,1,Sum(Fields!QTDE_MET.Value)) ^- 1)),
        (Sum(Fields!QTDE_REA.Value) * (IIF(Sum(Fields!QTDE_RET.Value)=0,1,Sum(Fields!QTDE_RET.Value)) ^- 1))
    ) >= 112, "Blue",(
                            IIF(IIF(
                                 Sum(Fields!QTDE_RET.Value) = 0,
                                (Sum(Fields!QTDE_REA.Value) * (IIF(Sum(Fields!QTDE_MET.Value)=0,1,Sum(Fields!QTDE_MET.Value)) ^- 1)),
                                (Sum(Fields!QTDE_REA.Value) * (IIF(Sum(Fields!QTDE_RET.Value)=0,1,Sum(Fields!QTDE_RET.Value)) ^- 1))
                            ) >= 95 AND
                            IIF(
                                 Sum(Fields!QTDE_RET.Value) = 0,
                                (Sum(Fields!QTDE_REA.Value) * (IIF(Sum(Fields!QTDE_MET.Value)=0,1,Sum(Fields!QTDE_MET.Value)) ^- 1)),
                                (Sum(Fields!QTDE_REA.Value) * (IIF(Sum(Fields!QTDE_RET.Value)=0,1,Sum(Fields!QTDE_RET.Value)) ^- 1))
                            ) <= 111, "Green", (
                                                    IIF(IIF(
                                                         Sum(Fields!QTDE_RET.Value) = 0,
                                                        (Sum(Fields!QTDE_REA.Value) * (IIF(Sum(Fields!QTDE_MET.Value)=0,1,Sum(Fields!QTDE_MET.Value)) ^- 1)),
                                                        (Sum(Fields!QTDE_REA.Value) * (IIF(Sum(Fields!QTDE_RET.Value)=0,1,Sum(Fields!QTDE_RET.Value)) ^- 1))
                                                    ) >= 81 AND
                                                    IIF(
                                                         Sum(Fields!QTDE_RET.Value) = 0,
                                                        (Sum(Fields!QTDE_REA.Value) * (IIF(Sum(Fields!QTDE_MET.Value)=0,1,Sum(Fields!QTDE_MET.Value)) ^- 1)),
                                                        (Sum(Fields!QTDE_REA.Value) * (IIF(Sum(Fields!QTDE_RET.Value)=0,1,Sum(Fields!QTDE_RET.Value)) ^- 1))
                                                    ) <= 94, "Yellow", "Red")
))))

答案 1 :(得分:0)

我进行了一些测试,我相信已经找到了解决方案。谢谢。

字段值

=IIF(
     Sum(Fields!QTDE_RET.Value) = 0,
    (Sum(Fields!QTDE_REA.Value) * (IIF(Sum(Fields!QTDE_MET.Value)=0,1,Sum(Fields!QTDE_MET.Value)) ^- 1)),
    (Sum(Fields!QTDE_REA.Value) * (IIF(Sum(Fields!QTDE_RET.Value)=0,1,Sum(Fields!QTDE_RET.Value)) ^- 1))
)

颜色填充

=IIF(ReportItems!txtb_PerRea.Value >= 1.12, "Blue",
(IIF(ReportItems!txtb_PerRea.Value >= 0.95 AND ReportItems!txtb_PerRea.Value < 1.12, "Green", 
(IIF(ReportItems!txtb_PerRea.Value >= 0.81 AND ReportItems!txtb_PerRea.Value < 0.95, "Yellow", "Red")
))))

颜色字体

=IIF(ReportItems!txtb_PerRea.Value >= 1.12, "White",
(IIF(ReportItems!txtb_PerRea.Value >= 0.95 AND ReportItems!txtb_PerRea.Value < 1.12, "White", 
(IIF(ReportItems!txtb_PerRea.Value >= 0.81 AND ReportItems!txtb_PerRea.Value < 0.95, "Black", "White")
))))