问题描述
我有一个包含参数学生姓名和学生 ID 的下拉菜单。当我选择学生姓名时,会出现一个如下所示的文本框并带有提交按钮:
点击学生 ID 后,报告参数显示如下:
对于学生姓名和学生 ID,均使用数据集 StudentDetails。当报告运行时,如果未找到学生姓名的值应显示消息“未找到学生姓名”,如果学生 ID 不正确应显示消息“未找到学生 ID”。
在报告中,我添加了一个文本框来显示带有如下表达式的消息:
=SWITCH(
First(Fields!StudentName.Value,"StudentDetails")=""," Student Name not found ",First(Fields!StudentId.Value," StudentDetails ")=""," Student Id not found ")
当输入不正确的学生姓名时,消息显示正确,但是,对于不正确的学生 id 仍然显示相同的消息“找不到学生姓名”
感谢您的帮助
解决方法
您要么需要像这样嵌套 IIF 语句
=IIF(
First(Fields!StudentName.Value,"StudentDetails")="","Student Name not found",IIF(
First(Fields!StudentId.Value,"Student Id not found",""))
或者使用通常更容易阅读的 SWITCH 语句。
=SWITCH(
First(Fields!StudentName.Value,First(Fields!StudentId.Value,"Student Id not found"
)
从 OP 更新后编辑
SWITCH
将在第一个为真的表达式处停止,因此如果您想报告两者都是空的,那么您需要在 SWITCH 语句中添加另一个表达式
=SWITCH(
First(Fields!StudentName.Value,First(Fields!StudentName.Value,"StudentDetails")="" AND First(Fields!StudentID.Value,"Student Name AND ID not found"
)
如果这不起作用,那么添加文本框来调试每个表达式,可能是这样,例如 StudentID 是数字数据类型,因此您必须调整测试以适应(例如 = Nothing
)