【问题标题】:Can't seem to use a variable as the index of a multi-value parameter似乎不能使用变量作为多值参数的索引
【发布时间】:2013-09-02 11:36:11
【问题描述】:

我正在尝试在 Report Builder 3.0 中编写一个自定义函数,该函数基本上检查多值参数中的值(它们将是 1、2 或 3)并返回“Bronze”(1)、“ Silver” (2) 或“Gold” (3) 取决于每行的最高值。所以……

Public Function BronzeSilverGold() As String
    Dim bronzeFlag As Integer = 0
    Dim silverFlag As Integer = 0
    Dim goldFlag As Integer = 0
    Dim numPledges As Integer = Report.Parameters!PledgeValues.Count()

    For index As Integer = 1 To numPledges
        If Report.Parameters!PledgeValues.Value(index) = 1 Then
            bronzeFlag += 1
        ElseIf Report.Parameters!PledgeValues.Value(index) = 2 Then
        bronzeFlag += 1
            silverFlag += 1
        ElseIf Report.Parameters!PledgeValues.Value(index) = 3 Then
            bronzeFlag += 1
            silverFlag  += 1
            goldFlag += 1
        End If
    Next index

    If goldFlag = numPledges Then
        Return "Gold"
    ElseIf silverFlag = numPledges Then
        Return "Silver"
    ElseIf bronzeFlag = numPledges Then
        Return "Bronze"
    End If
End Function

让我烦恼的是,当我运行报告时,单元格只返回#Error。问题似乎特别是“Report.Parameters!PledgeValues.Value(index)”。如果我运行这个:

Public Function BronzeSilverGold() As String
    Dim bronzeFlag As Integer = 0
    Dim numPledges As Integer = Report.Parameters!PledgeValues.Count()
    Dim index as Integer = 0

    For index = 1 To numPledges
        If (Report.Parameters!PledgeValues.Value(1) = 2) Then
            bronzeFlag += 1
        End If
    Next index

    return bronzeFlag

End Function

然后它成功返回值8(因为参数中的第一个值是2)。如果我将第 7 行从 Report.Parameters!PledgeValues.Value(1) 更改为 Report.Parameters!PledgeValues.Value(index) 报告中的单元格将返回 #Error

不知道我做错了什么 - 如果有人有任何想法,他们将不胜感激。

【问题讨论】:

    标签: vb.net reporting-services report builder


    【解决方案1】:

    您的问题是 multivalue parameter 值集合是从零开始的,而不是从一开始的。也就是说,数组中的第一项是索引0,最后一项是Count - 1。因此For index As Integer = 1 To numPledges 抛出一个数组越界错误。

    你需要使用:

    For index As Integer = 0 To numPledges - 1
    

    顺便说一句,Count 是一个属性而不是一个方法,所以它后面不应该有括号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 2011-03-21
      相关资源
      最近更新 更多