大家好我需要你的建议,
1)我有一个动态字符串,每次都会改变。
例如,今天字符串将为"ItemA,ItemB,ItemC"
,明天它将仅为"itemA,ItemB"
。
2)我有一份SSRS报告,其中有3列
3)我想拆分此字符串"ItemA,ItemB,ItemC"
,并希望在ssrs表的这3列中显示拆分子字符串。分隔符是","
(逗号)
4)我用过
=Split("ItemA,ItemB,ItemC",",").GetValue(0) in the first column of the report
=Split("ItemA,ItemB,ItemC",",").GetValue(1) in the second column of the report
=Split("ItemA,ItemB,ItemC",",").GetValue(2) in the third column of the report
5)一切正常,直到我的字符串为"ItemA,ItemB,ItemC"
,
但是,当我的字符串更改为"ItemA,ItemB"
时,我在第三列中看到"#Error"
。
我理解错误,
=Split("ItemA,ItemB,ItemC",",").GetValue(2)
我们没有任何值,因为在应用拆分函数后,字符串现在只有2个值。
有没有办法可以避免在第三栏中#Error
。
注意:我必须在ssrs报告中强制使用3列。
我曾尝试在第三列中使用=Replace(Split("ItemA,ItemB",",").GetValue(2),"#Error","NULL")
,但这也无效。
答案 0 :(得分:2)
这类似于使用IIF语句中的divide by zero issue。问题是IIF不是表达式,它是一个具有三个参数的函数:
IIF(Condition, ValueIfTrue, ValueIfFalse)
因此,在传递给函数之前,会对所有参数进行求值,这会导致错误,因为即使条件应该意味着错误表达式也不会对错误表达式进行评估。
我看不到使用通常解决方法的方法,可以解决除零情况下的问题。我们需要的是一种没有这个问题的真实语言。幸运的是,这可以通过自定义代码的形式获得。
执行以下操作:
插入以下代码:
Public Function ExtractCode(Combined As String, Position As Integer) As String
if (Split(Combined, ",").Length >= Position) Then
Return Split(Combined, ",").GetValue(Position-1)
Else
Return ""
End If
End Function
点击“确定”并返回报告
插入以下表达式:
=Code.ExtractCode(Fields!Combo.Value, 3)
值3是您要从Combo字段中提取的“列”,因此要获取第二个“列”,您将使用2.如果该位置没有列,则返回空字符串
答案 1 :(得分:0)
如果名称返回错误,您可以将第3列的可见性更改为隐藏
答案 2 :(得分:0)
您可以追加虚拟元素,然后拆分:
yourText = "ItemA,ItemB"
item0 = Split(yourText & ",", ",").GetValue(0)
item1 = Split(yourText & ",", ",").GetValue(1)
item2 = Split(yourText & ",", ",").GetValue(2)
item0 = ItemA
item1 = ItemB
item2 =