对象在vbscript / asp classic中不断超出范围

时间:2016-06-29 12:49:23

标签: vbscript asp-classic

所以我有一个从数据库中提取的项目列表,需要以非常具体和复杂的方式进行排序。为了解决这个问题,我制作了一个包含记录集中所有信息的对象,并按照数组进行组织,我可以按照我想要的顺序打印出来。问题是在我的“do while rs.eof”之后,我将所有对象设置为我需要的任何对象,当循环结束时,它们会超出范围,即使数组本身没有。我已经检查过对象是否在循环中设置并且它们有效,但是当我到达Response.Write()时它们就停止了。我不包括循环的开头,因为它或多或少是在更改数组时复制粘贴的else语句。有什么提示吗?

Else
            ReDim Preserve f0(Ubound(f0)+1)
            Set tab = new TabletHelper
            Set f0(Ubound(f0)) = tab
            item  = rs("Item")
            dest = rs("Destination")
            time = rs("DateTime")
            f0(Ubound(f0)).setItem(item)
            f0(Ubound(f0)).setLocation(dest)
            f0(Ubound(f0)).setDateTime(time)
        End If
        rs.movenext
    loop

    rs.Close

    If Ubound(a045) > 0 then
    for i = 1 to Ubound(a045)
            Response.Write("<tr><td>"&a045(i).iNum()&"</td><td>"&a045(i).dest()&"</td><td>"&a045(i).dateT()&"</td></tr>")
    next

1 个答案:

答案 0 :(得分:0)

所以我想出了我的问题。我最初将我的数组初始化为0,所以当代码顶部的redim运行时,它会将数组的大小调整为1,从而使得我在数组中使用第一个数组。这显然给了我一个错误,我通过将数组初始化为大小1来修复它。但是,我忘了补偿这一点并将redim语句移动到if语句的末尾并更改for循环的边界。简而言之,我是个白痴。从好的方面来说,我学到了更多关于如何正确发布SO的信息!