所以我有一个从数据库中提取的项目列表,需要以非常具体和复杂的方式进行排序。为了解决这个问题,我制作了一个包含记录集中所有信息的对象,并按照数组进行组织,我可以按照我想要的顺序打印出来。问题是在我的“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
答案 0 :(得分:0)
所以我想出了我的问题。我最初将我的数组初始化为0,所以当代码顶部的redim运行时,它会将数组的大小调整为1,从而使得我在数组中使用第一个数组。这显然给了我一个错误,我通过将数组初始化为大小1来修复它。但是,我忘了补偿这一点并将redim语句移动到if语句的末尾并更改for循环的边界。简而言之,我是个白痴。从好的方面来说,我学到了更多关于如何正确发布SO的信息!