需要有关SSRS SPLIT功能的帮助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了需要有关SSRS SPLIT功能的帮助相关的知识,希望对你有一定的参考价值。

大家好我需要你的建议,

1)我有一个动态字符串,每次都会改变。

例如今天字符串将是"ItemA,ItemB,ItemC",明天它将只是"itemA,ItemB"

2)我有一份包含3列的SSRS报告

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)我们没有任何值,因为在应用split函数后,字符串现在只有2个值。

有没有什么办法可以在第三栏中避免使用#Error

注意:我必须在ssrs报告中强制使用3列。

我曾尝试在第三列使用=Replace(Split("ItemA,ItemB",",").GetValue(2),"#Error","NULL"),但这也无法奏效。

答案

这类似于使用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.如果该位置没有列,则返回空字符串。

另一答案

如果名称返回错误,您可以将第3列的可见性更改为隐藏

另一答案

您可以附加一个虚拟元素然后拆分:

yourText = "ItemA,ItemB"

item0 = Split(yourText & ",", ",").GetValue(0)
item1 = Split(yourText & ",", ",").GetValue(1)
item2 = Split(yourText & ",", ",").GetValue(2)

item0 = ItemA
item1 = ItemB
item2 = 

以上是关于需要有关SSRS SPLIT功能的帮助的主要内容,如果未能解决你的问题,请参考以下文章

SSRS表达式帮助多个条件

需要示例代码片段帮助

SSRS 2008,两个数据集,一个图表

报告正文中的SSRS日历控件

SSRS钻取GO到URL Target = _Top

Excel VBA代码将SSRS数据作为数据集提取