对象不断超出 vbscript/asp 经典的范围
Object keeps falling out of scope in 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
所以我想出了我的问题。我最初将我的数组初始化为大小 0,因此当代码顶部的 redim 运行 时,它会将数组的大小调整为 1,使我正在处理的任何元素成为数组中的第一个。这显然给了我一个错误,我通过将数组初始化为大小 1 来修复它。但是,我忘记对此进行补偿并将 redim 语句移动到 if 语句的末尾并更改 for 循环的边界。简而言之,我是个白痴。从好的方面来说,我了解了更多关于如何正确 post 的知识!
所以我有一个从数据库中提取的项目列表,需要以非常具体和复杂的方式进行排序。为了解决这个问题,我制作了一个包含记录集中所有信息的对象,并按数组组织它们,我可以按照我想要的顺序打印出来。问题是,在 "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,因此当代码顶部的 redim 运行 时,它会将数组的大小调整为 1,使我正在处理的任何元素成为数组中的第一个。这显然给了我一个错误,我通过将数组初始化为大小 1 来修复它。但是,我忘记对此进行补偿并将 redim 语句移动到 if 语句的末尾并更改 for 循环的边界。简而言之,我是个白痴。从好的方面来说,我了解了更多关于如何正确 post 的知识!