我在SSRS2012中的参数内遇到了这段代码的问题。
=IIF(InStr(Parameters!P1.Value,"@")=0,
"missing @",
Left(Parameters!P1.Value(InStr(Parameters!P1.Value,"@")-1)))
我的目的是检查参数P1是否包含" @"如果它不打印"缺少@"否则我想从该参数中删除" @"之后的内容。 (" @" inculded)。
例如:
P1 = 123456 - >打印"缺少@"
P1 = 123 @ 56 - >打印123
问题是SSRS会丢失错误:"参数'长度'必须大于或等于零"当我插入一个没有" @"的值时。 (当我用&#34插入一个值时; @"它很顺利)
似乎IIF首先解析了2个表达式(而不是一个是真或假),之后它根据第一个条件的评估给出了正确的表达式。
寻求一些帮助。谢谢!
答案 0 :(得分:1)
这是一个奇怪的错误,这是一个解决方案
=replace(replace(IIF(InStr(Fields!P1.Value,"@")<> 0,
left(Fields!P1.Value,InStr(Fields!P1.Value,"@")),"missing"),"@",""),"missing","missing @")