最近接手了一个ASP的网站,不太熟悉。昨天,其中一个页面开始报错:
Microsoft VBScript runtime error '800a0009'
Subscript out of range: 'i'
default.asp, line 19
这是第 13-27 行的代码:
<%
set rs = Server.CreateObject("ADODB.Recordset")
rs.open "SELECT * FROM VENDORS_LIST_TBL WHERE inStr('"& dVendorStr &"','|'&ID&'|')", Cn
DIM dTitle(100), dDescription(100), dLink(100)
i = 0 : Do while NOT rs.EOF : i = i + 1
dTitle(i) = rs.fields.item("dTitle").value
dDescription(i) = rs.fields.item("dDescription").value
dLink(i) = rs.fields.item("dLink").value : if dLink(i) <> "" then dTitle(i) = "<a href=""" & dLink(i) & """>" & dTitle(i) & "</a>"
if NOT rs.EOF then rs.movenext
Loop
x = i
rs.Close : Set rs = Nothing
%>
关于这里发生的事情以及我如何解决它有什么想法吗?
谢谢!
最佳答案
您已将 dTitle、dDescription 和 dLink 声明为大小为 100 的数组。在遍历记录集时,您正在为这些数组分配元素。看起来你的记录集中有超过 100 条记录,所以逻辑试图做类似的事情:
dTitle(101) = rs.fields.item("dTitle").value
这将引发错误,因为您的数组不够大,无法容纳所有数据。
关于asp-classic - Microsoft VBScript 运行时错误 '800a0009',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11064329/