繁体   English   中英

索引数组错误

[英]Index array error

我有一个网站,该网站根据数据库中的统计信息显示图表。 但是,出现此错误“ 索引在数组的边界之外。 ”并指向以下代码:

>Line 1462: ctrAPM(ctr) = "<set value='0' />"

这是我的整个Sub:

Public Function Bar_Task_Cat() As String
    Dim Conn As SqlConnection = New SqlConnection(MSSQLstring)
    Conn.Open()

    Dim strUserCode = CType(Session("usrCd"), String)

    Dim SQLstring As String

    If strUserCode = "ADMIN" Then
        SQLstring = "SELECT COUNT(AskAOID) AS credits, CatCode AS category, ProductCode " _
                                & "FROM dbo.AskAO_Stats " _
                                & "WHERE (FirstResponse BETWEEN '" & dpFrom.SelectedDate.ToString & "' AND '" & dpTo.SelectedDate.ToString & "') " _
                                & "AND (Status='ACTIVE' OR Status='CLOSED') " _
                                & "AND (FirstResponse IS NOT NULL) AND (CatCode IS NOT NULL) AND (ProductCode IS NOT NULL) " _
                                & "GROUP BY ProductCode, CatCode " _
                                & "ORDER BY CatCode"
    Else
        SQLstring = "SELECT COUNT(AskAOID) AS credits, CatCode AS category, ProductCode " _
                                & "FROM dbo.AskAO_Stats " _
                                & "WHERE (FirstResponse BETWEEN '" & dpFrom.SelectedDate.ToString & "' AND '" & dpTo.SelectedDate.ToString & "') " _
                                & "AND (Status='ACTIVE' OR Status='CLOSED') " _
                                & "AND (Deferred = '" & strUserCode & "') " _
                                & "AND (FirstResponse IS NOT NULL) AND (CatCode IS NOT NULL) AND (ProductCode IS NOT NULL) " _
                                & "GROUP BY ProductCode, CatCode " _
                                & "ORDER BY CatCode"
    End If

    Dim SQLcmd As SqlCommand = New SqlCommand(SQLstring, Conn)
    SQLcmd.Parameters.AddWithValue("@dateFrom", dpFrom.SelectedDate)
    SQLcmd.Parameters.AddWithValue("@dateTo", dpTo.SelectedDate) '& "WHERE (FirstResponse BETWEEN @dateFrom AND @dateTo) " 
    Dim DA As New SqlDataAdapter(SQLstring, Conn)
    Dim DS As New DataSet
    DA.Fill(DS)

    Conn.Close()

    Dim Def_Color_t(12) As String
    Def_Color_t(0) = "AFD8F8"
    Def_Color_t(1) = "F6BD0F"
    Def_Color_t(2) = "8BBA00"
    Def_Color_t(3) = "FF8E46"
    Def_Color_t(4) = "008E8E"
    Def_Color_t(5) = "D64646"
    Def_Color_t(6) = "8E468E"
    Def_Color_t(7) = "588526"
    Def_Color_t(8) = "B3AA00"
    Def_Color_t(9) = "008ED6"
    Def_Color_t(10) = "9D080D"
    Def_Color_t(11) = "A186BE"
    Def_Color_t(12) = "AFD8F8"


    Dim ctr As Integer = 0
    Dim ctrD As Integer = 0
    Dim ctrM As Integer = 0
    Dim ctrF As Integer = 0
    Dim ctrA As Integer = 0
    Dim ctrO As Integer = 0
    Dim m_ctr As Integer = 0
    Dim m1_ctr As Integer = 0

    Dim strXML As String
    Dim Cat As String
    Dim OldCat As String
    Dim strCatName As String

    Dim ProdCode As String

    'counters for Products
    Dim ctrAPM(26), ctrDMX(26), ctrDVS(26), ctrDVX(26), ctrEAM(26), ctrEPR(26), ctrFCX(26), ctrMHM(26), ctrONL(26), ctrOTH(26), ctrPOR(26), ctrUFF(26), ctrXMT(26) As String

    'counters for Categories
    Dim ctrAR(13), ctrDA(13), ctrDB(13), ctrDC(13), ctrDD(13), ctrDE(13), ctrDF(13), ctrDG(13), ctrDH(13), ctrDI(13), ctrDJ(13), ctrDK(13), ctrDL(13) As String
    Dim ctrDM(13), ctrDN(13), ctrDO(13), ctrDP(13), ctrDQ(13), ctrFW(13), ctrOL(13), ctrOO(13), ctrPM(13), ctrPQ(13), ctrPR(13), ctrSS(13), ctrST(13) As String

    strXML = ""
    Cat = ""
    OldCat = ""
    strCatName = ""

    strXML = strXML & "<chart palette='2' labelDisplay='Rotate' slantLabels='1' showBorder='0' bgColor='FFFFFF,FFFFFF' showPercentValues='1' showPercentInToolTip='1' stack100Percent='1' caption='Percentage of Tasks by Category by Product' shownames='1' showvalues='0' showSum='1' decimals='0' useRoundEdges='1'>"
    strXML = strXML & "<categories>"
    Do Until ctr = DS.Tables(0).Rows.Count
        Cat = DS.Tables(0).Rows(ctr)("category").ToString
        If Cat <> OldCat Then
            Select Case DS.Tables(0).Rows(ctr)("category").ToString
                Case "AR"
                    strCatName = "AR" 'Architecture and Application
                Case "DA"
                    strCatName = "DA" 'Accessories
                Case "DB"
                    strCatName = "DB" 'Advanced Control
                Case "DC"
                    strCatName = "DC" 'Batch
                Case "DD"
                    strCatName = "DD" 'Bundles
                Case "DE"
                    strCatName = "DE" 'Engineering Tools
                Case "DF"
                    strCatName = "DF" 'Modernization and Migration
                Case "DG"
                    strCatName = "DG" 'DeltaV SIS
                Case "DH"
                    strCatName = "DH" 'Wireless
                Case "DI"
                    strCatName = "DI" 'DeltaV Hardware
                Case "DJ"
                    strCatName = "DJ" 'DeltaV Zones
                Case "DK"
                    strCatName = "DK" 'Integration and Connectivity
                Case "DL"
                    strCatName = "DL" 'Languages
                Case "DM"
                    strCatName = "DM" 'Cactus
                Case "DN"
                    strCatName = "DN" 'Operations Software
                Case "DO"
                    strCatName = "DO" 'PROVOX and RS3 Transitions
                Case "DP"
                    strCatName = "DP" 'Workstation Hardware and Software
                Case "DQ"
                    strCatName = "DQ" 'Simulate and Virtualization
                Case "FW"
                    strCatName = "FW" 'Forward to other groups
                Case "OL"
                    strCatName = "OL" 'Ordering, Licensing, Policies
                Case "OO"
                    strCatName = "OO" 'Others
                Case "PM"
                    strCatName = "PM" 'Forward to Product Manager
                Case "PQ"
                    strCatName = "PQ" 'Proposals and Quotations
                Case "PR"
                    strCatName = "PR" 'Product Information
                Case "SS"
                    strCatName = "SS" 'Forward to Sales Support
                Case "ST"
                    strCatName = "ST" 'Systems and Tools
            End Select
            strXML = strXML & "<category label='" & strCatName & "' value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            m_ctr = m_ctr + 1
        End If
        OldCat = Cat
        ctr = ctr + 1
    Loop
    strXML = strXML & "</categories>"

    'initialize
    ctr = 0

    Do Until ctr = m_ctr
        ctrAPM(ctr) = "<set value='0' />"
        ctrDMX(ctr) = "<set value='0' />"
        ctrDVS(ctr) = "<set value='0' />"
        ctrDVX(ctr) = "<set value='0' />"
        ctrEAM(ctr) = "<set value='0' />"
        ctrEPR(ctr) = "<set value='0' />"
        ctrFCX(ctr) = "<set value='0' />"
        ctrMHM(ctr) = "<set value='0' />"
        ctrONL(ctr) = "<set value='0' />"
        ctrOTH(ctr) = "<set value='0' />"
        ctrPOR(ctr) = "<set value='0' />"
        ctrUFF(ctr) = "<set value='0' />"
        ctrXMT(ctr) = "<set value='0' />"
        ctr = ctr + 1
    Loop

    ctr = 0
    Cat = ""
    OldCat = DS.Tables(0).Rows(0)("category").ToString

    Do Until ctr = DS.Tables(0).Rows.Count
        ProdCode = DS.Tables(0).Rows(ctr)("ProductCode").ToString

        Cat = DS.Tables(0).Rows(ctr)("category").ToString

        If Cat <> OldCat Then
            m1_ctr = m1_ctr + 1
        End If

        Select Case ProdCode
            Case "APM"
                ctrAPM(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            Case "DMX"
                ctrDMX(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            Case "DVS"
                ctrDVS(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            Case "DVX"
                ctrDVX(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            Case "EAM"
                ctrEAM(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            Case "EPR"
                ctrEPR(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            Case "FCX"
                ctrFCX(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            Case "MHM"
                ctrMHM(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            Case "ONL"
                ctrONL(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            Case "OTH"
                ctrOTH(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            Case "POR"
                ctrPOR(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            Case "UFF"
                ctrUFF(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
            Case "XMT"
                ctrXMT(m1_ctr) = "<set value='" & DS.Tables(0).Rows(ctr)("credits").ToString & "' />"
        End Select

        OldCat = Cat

        ctr = ctr + 1
    Loop

    ctr = 0
    strXML = strXML & "<dataset seriesName='Asset Portal' color='8E468E' showValues='0'>" 'Asset Portal
    Do Until ctr = m_ctr
        strXML = strXML & ctrAPM(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    ctr = 0
    strXML = strXML & "<dataset seriesName='AMS Device' color='F6BD0F' showValues='0'>" 'AMS Device
    Do Until ctr = m_ctr
        strXML = strXML & ctrDMX(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    ctr = 0
    strXML = strXML & "<dataset seriesName='DeltaV SIS' color='607416' showValues='0'>" 'DeltaV SIS
    Do Until ctr = m_ctr
        strXML = strXML & ctrDVS(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    ctr = 0
    strXML = strXML & "<dataset seriesName='DeltaV' color='588526' showValues='0'>" 'DeltaV
    Do Until ctr = m_ctr
        strXML = strXML & ctrDVX(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    ctr = 0
    strXML = strXML & "<dataset seriesName='Essential Asset Monitoring' color='A3CC77' showValues='0'>" 'Essential Asset Monitoring
    Do Until ctr = m_ctr
        strXML = strXML & ctrEAM(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    ctr = 0
    strXML = strXML & "<dataset seriesName='EPRO' color='B3AA00' showValues='0'>" 'EPRO
    Do Until ctr = m_ctr
        strXML = strXML & ctrEPR(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    ctr = 0
    strXML = strXML & "<dataset seriesName='Field Communicator' color='8BBA00' showValues='0'>" 'Field Communicator
    Do Until ctr = m_ctr
        strXML = strXML & ctrFCX(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    ctr = 0
    strXML = strXML & "<dataset seriesName='Machinery Health' color='FF8E46' showValues='0'>" 'Machinery Health
    Do Until ctr = m_ctr
        strXML = strXML & ctrMHM(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    ctr = 0
    strXML = strXML & "<dataset seriesName='Online' color='D64646' showValues='0'>" 'Online
    Do Until ctr = m_ctr
        strXML = strXML & ctrONL(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    ctr = 0
    strXML = strXML & "<dataset seriesName='Others' color='9D080D' showValues='0'>" 'Others
    Do Until ctr = m_ctr
        strXML = strXML & ctrOTH(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    ctr = 0
    strXML = strXML & "<dataset seriesName='Portables' color='008E8E' showValues='0'>" 'Portables
    Do Until ctr = m_ctr
        strXML = strXML & ctrPOR(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    ctr = 0
    strXML = strXML & "<dataset seriesName='USB Fieldbus Interface' color='AA9CB6' showValues='0'>" 'USB Fieldbus Interface
    Do Until ctr = m_ctr
        strXML = strXML & ctrUFF(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    ctr = 0
    strXML = strXML & "<dataset seriesName='9420 Wireless Vibration Transmitter' color='008ED6' showValues='0'>" '9420 Wireless Vibration Transmitter
    Do Until ctr = m_ctr
        strXML = strXML & ctrXMT(ctr)
        ctr = ctr + 1
    Loop
    strXML = strXML & "</dataset>"

    strXML = strXML & "</chart>"

    'Create the chart - Column 3D Chart with data from strXML variable using dataXML method
    Return RenderChartHTML("Charts/NewCharts/StackedColumn3D.swf", "", strXML, "myNext", "450", "500", False)
    'for gauge
End Function

但是我的问题是,仅当管理员正在访问站点时,我才遇到错误(即strUserCode = "ADMIN" )。 非管理员帐户可以正常工作。 我不知道出了什么问题,但我知道它像一个月前一样运行良好:(

我猜您以管理员身份登录时,查询返回的类别超过26个。 既然您说它是一个月前工作的,那么这似乎是可能的情况。

Case Else
     strCatName = "Others" 'Unknown category

可能会帮助您更好地进行调试。 另一个选择是直接使用Admin运行SQL查询,并检查您没有得到任何意外的类别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM