报表生成器.rdl检查阵列密钥存在

时间:2012-07-12 11:55:23

标签: ssrs-2008 reporting-services

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

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

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

1 个答案:

答案 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"
)

使用数据集:

enter image description here

给出结果:

enter image description here

对于所有可能的情况,它不是防弹的,但可能足以满足您的数据。