我正在制作一份报告,我需要将一个逗号分隔的字符串拆分为一个表格的三列。
string = 'some text, some text, some text'
但刺痛并不总是有两个昏迷,即
string = 'some text, some text'
所以当我试图获得第三列的值时
=Split(Fields!GLDescription.Value, ", ").GetValue(2)
此代码可能会在列中产生“#Error”消息。我试着通过检查长度来解决这个问题
=IIF(Split(Fields!GLDescription.Value, ", ").Length >= 3, Split(Fields!GLDescription.Value, ", ").GetValue(2), "")
但它仍然导致同样的错误。无论如何都要检查是否存在数组键?
答案 0 :(得分:1)
正如您所见,问题在于SSRS IIf
表达式不擅长短路。我可以想到一个适用于2和3列字段的解决方法。
尝试表达式:
=IIf(
Split(Fields!GLDescription.Value, ", ").Length = 3
, Mid(
Fields!GLDescription.Value
, InStrRev(Fields!GLDescription.Value, ", ") + 2
, Len(Fields!GLDescription.Value) - InStrRev(Fields!GLDescription.Value, ", ") + 2
)
, "No val 3"
)
使用数据集:
给出结果:
对于所有可能的情况,它不是防弹的,但可能足以满足您的数据。