SSRS 表达式条件使用公式显示基于参数输入的日期

SSRS expression condition using a formula to show dates based on parameter input

我正在努力编写一个 SSRS 表达式来显示基于组标题和参数日期的日期。 该表达式需要查看单元格值并添加 1 和 7 天。日期参数称为inputdate

所以如果单元格值 = '4) 第 1 周过期 - ' 那么 inputdate + 1 &-& inputerdate +7 as WE1 if the cell value = '5) Overdue Week 2 - ' then inputdate + 8 &-& inputerdate +14 作为WE2 if the cell value = '6) Overdue Week 3 - ' then inputdate + 15 &-& inputerdate +21 as WE2

等等...

单元格基于分组 header。

感谢任何帮助。提前致谢

这是我的尝试:

   =IIf((Fields!Type_of.Value = "4) Overdue Week 1 - '",
DateAdd("d",1,Parameters!inpdate.Value) +-+ DateAdd("d",7,Parameters!inpdate.Value),0)
,IIf((Fields!Type_of.Value = "5) Overdue Week 2 - '"
,DateAdd("d",8,Parameters!inpdate.Value) +-+ DateAdd("d",14,Parameters!inpdate.Value),0)
IIf((Fields!Type_of.Value = "6) Overdue Week 3 - '"
,DateAdd("d",15,Parameters!inpdate.Value) +-+ DateAdd("d",21,Parameters!inpdate.Value),0)
IIf((Fields!Type_of.Value = "7) Overdue Week 4 - '"
,DateAdd("d",22,Parameters!inpdate.Value) +-+ DateAdd("d",28,Parameters!inpdate.Value),0)
IIf((Fields!Type_of.Value = "8) Overdue Week 5 - '"
,DateAdd("d",29,Parameters!inpdate.Value) +-+ DateAdd("d",35,Parameters!inpdate.Value),0)
IIf((Fields!Type_of.Value = "9) Overdue Week 6 - '"
,DateAdd("d",36,Parameters!inpdate.Value) +-+ DateAdd("d",42,Parameters!inpdate.Value),0)

但它 returns 一个错误;

严重性代码说明项目文件行抑制状态 错误 [rsCompilerErrorInExpression] 字段 'Date_Type_of' 的值表达式包含错误:预期 [BC30198] ')'。

除了 Harry 提到的之外,您的 IIF 语句语法也不正确。您没有任何右括号,也没有最后的 ELSE。

这是应该起作用的:

=IIf(Fields!Type_of.Value = "4) Overdue Week 1 - '",
    DATEADD("d", Parameters!inpdate.Value, 1) & "-" & DATEADD("d", Parameters!inpdate.Value,7),
    IIf(Fields!Type_of.Value = "5) Overdue Week 2 - '",
        DATEADD("d", Parameters!inpdate.Value,8) & "-" & DATEADD("d", Parameters!inpdate.Value, 14),
        IIf(Fields!Type_of.Value = "6) Overdue Week 3 - '",
            DATEADD("d", Parameters!inpdate.Value, 15) & "-" & DATEADD("d", Parameters!inpdate.Value, 21),
            Parameters!inpdate.Value)
        )
    )

我缩进跟踪 IIF 的水平。但正如 Harry 还提到的,当你有多个场景时,SWITCH 会更好。

=SWITCH(    Fields!Type_of.Value = "4) Overdue Week 1 - '", DATEADD("d", Parameters!inpdate.Value, 1) & "-" & DATEADD("d", Parameters!inpdate.Value,7),
            Fields!Type_of.Value = "5) Overdue Week 2 - '", DATEADD("d", Parameters!inpdate.Value,8) & "-" & DATEADD("d", Parameters!inpdate.Value, 14),
            Fields!Type_of.Value = "6) Overdue Week 3 - '", DATEADD("d", Parameters!inpdate.Value, 15) & "-" & DATEADD("d", Parameters!inpdate.Value, 21), 
            True, Parameters!inpdate.Value
        )