SSRS 重载解析失败,因为没有可访问的 'IIf' 接受这个数量的参数

SSRS Overload resolution failed because no accessible 'IIf' accepts this number of arguments

我在一个文本框中使用其他文本框的值写了一个公式,但系统不接受。公式如下

=IIF(ReportItems!Textbox66.Value>=1,IIF(ReportItems!Textbox257.Value>=500,CInt((ReportItems!Textbox66.Value*100-100)/5),IIF(CInt((ReportItems!Textbox66.Value*100-100)/5)>=4,4,CInt((ReportItems!Textbox66.Value*100-100)/5))),IIF(ReportItems!Textbox257.Value<500,IIF(CInt((100-ReportItems!Textbox66.Value*100)/5)>-4,-4,IIF((100-ReportItems!Textbox66.Value*100)/5*(-1))),(CInt((100-ReportItems!Textbox66.Value*100)/5*(-1)))))

似乎有一个 IIF 语句只有三个参数之一。

IIF((100-ReportItems!Textbox66.Value*100)/5*(-1))

当 IIF 表达式为 True of False 时,它​​应该有一个值的参数。

IIF((100-ReportItems!Textbox66.Value * 100) / 5 * (-1), ?, ?)

如果使用 returns 和制表符分隔表达式,查找起来会更容易。几个空格也无妨。

=IIF(ReportItems!Textbox66.Value >= 1,
    IIF(ReportItems!Textbox257.Value >= 500,
        CInt((ReportItems!Textbox66.Value * 100 - 100) / 5),
            IIF(CInt((ReportItems!Textbox66.Value * 100 - 100) / 5) >= 4,
                4,
                CInt((ReportItems!Textbox66.Value * 100 - 100) / 5)
                )
        ),
    IIF(ReportItems!Textbox257.Value<500,
        IIF(CInt((100 - ReportItems!Textbox66.Value * 100) / 5) > -4,
            -4,
            IIF((100 - ReportItems!Textbox66.Value * 100) / 5 * (-1), ?, ?)
            ),
        CInt((100 - ReportItems!Textbox66.Value * 100) / 5 * (-1))
        )
    )

使用 SWITCH 可能有点乏味,但它可能更容易阅读并使其按您想要的方式工作。

=SWITCH(ReportItems!Textbox66.Value >= 1 AND ReportItems!Textbox257.Value >= 500, CInt((ReportItems!Textbox66.Value * 100 - 100) / 5),
        ReportItems!Textbox66.Value >= 1 AND CInt((ReportItems!Textbox66.Value * 100 - 100) / 5) >= 4, 4,
        ReportItems!Textbox66.Value >= 1, CInt((ReportItems!Textbox66.Value * 100 - 100) / 5), 
        ReportItems!Textbox257.Value < 500 AND CInt((100 - ReportItems!Textbox66.Value * 100) / 5) > -4,
            -4,  
        ReportItems!Textbox257.Value < 500 AND (100 - ReportItems!Textbox66.Value * 100) / 5 * (-1) = ?????, ?????,
        ReportItems!Textbox257.Value < 500, CInt((100 - ReportItems!Textbox66.Value * 100) / 5 * (-1))
)