0

我正在制作报告,我需要将逗号分隔的字符串拆分为表格的三列。

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), "")

但它仍然导致同样的错误。无论如何要检查数组键是否存在?

4

1 回答 1

1

如您所见,问题在于 SSRSIIf表达式不擅长短路。我可以想到一种适用于 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"
)

使用数据集:

在此处输入图像描述

给出结果:

在此处输入图像描述

对于所有可能的情况,它并不是万无一失的,但对于您的数据来说可能就足够了。

于 2013-03-07T16:38:46.007 回答