【问题标题】:index was outside bounds of array in SSRS when parameter come as blank当参数为空白时,索引在 SSRS 中的数组范围之外
【发布时间】:2017-10-20 16:01:07
【问题描述】:

我正在研究SSRS report,其中user!userid 变量与3 pipe delimited values 一起出现

例如:

ReportUser |500|100

我使用下面的表达式拆分值

=(Split(Parameters!QueryString.Value, "|")).GetValue(0)
=(Split(Parameters!QueryString.Value, "|")).GetValue(1)
=(Split(Parameters!QueryString.Value, "|")).GetValue(2)

parameter 带有上述值时,表达式工作正常。但是,当任何参数以blank 出现时,我在report execution 期间低于错误。

索引超出了参数的数组范围。

我尝试了以下使用 iif 表达式的解决方法

=iif((Split(Parameters!QueryString.Value, "|")).GetValue(0)=NOTHING,0,
      (Split(Parameters!QueryString.Value, "|")).GetValue(0))

=iif((Split(Parameters!QueryString.Value, "|")).GetValue(0)="",0,
      (Split(Parameters!QueryString.Value, "|")).GetValue(0))

我仍然遇到同样的错误。有人可以帮助如何使用此表达式处理 blank values 吗?

【问题讨论】:

    标签: sql sql-server reporting-services ssrs-2016


    【解决方案1】:

    我最初认为这会起作用

    此代码失败

    =SWITCH
    (
    Split(Parameters!QueryString.Value, "|").Length <3, "",
    True, Split(Parameters!QueryString.Value, "|").GetValue(1)
    )
    

    由于 Switch 在第一个 True 结果处停止评估,但由于某种原因我仍然收到错误。我不确定为什么会发生这种情况,但我通过编写一个函数来解决它。

    这确实有效

    我将此代码添加到 Reports Code 属性中(它可能会变得更好,但我多年来没有做过任何 VB.Net)

    Public Function GetSplitValue(inputString as String, delim as string, index as Integer) as String
    
        Dim arr() AS String = Split(inputString, delim)
        Dim result AS string
    
        TRY
            result = arr(index)
        CATCH
            result = ""
        END TRY
    
        RETURN result
    
    End Function
    

    然后,您可以在您的文本框中使用类似这样的内容或您正在填充的任何内容在您的表达式中调用它。

    =Code.GetSplitValue(Parameters!QueryString.Value,"|",0)
    =Code.GetSplitValue(Parameters!QueryString.Value,"|",1)
    =Code.GetSplitValue(Parameters!QueryString.Value,"|",2)
    

    如果您想要的不是空字符串,只需编辑 CATCH 块中的代码即可。

    【讨论】:

      猜你喜欢
      • 2013-05-02
      • 2011-11-26
      • 1970-01-01
      • 2013-10-31
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多