Microsoft VBScript运行时错误'800a0009'ASP

时间:2012-07-26 21:17:51

标签: asp-classic vbscript runtime-error

我需要你的帮助。在我的经典ASP应用程序中添加购物车中的项目时出现此错误(并非总是如此)

Microsoft VBScript runtime
error '800a0009'
Subscript out of range
/agrega_carrito.inc, line 71

这是来自档案的代码,第56-86行

if IsEmpty(Session("arrcarrito")) then
'Create shopping cart
Dim arrcarrito()
Redim arrcarrito(6, 1)
arrcarrito (0, 0) = idprod
arrcarrito (1, 0) = color
arrcarrito (2, 0) = talla
arrcarrito (3, 0) = cantidad
arrcarrito (4, 0) = precio
arrcarrito (5, 0) = peso
Session("arrcarrito") = arrcarrito
Else
'Add items to shopping cart
arrcarrito = Session("arrcarrito")
tamano_arr = Ubound(arrcarrito, 2)
Redim Preserve arrcarrito (6, tamano_arr + 1)   <- line 71
arrcarrito (0, tamano_arr) = idprod
arrcarrito (1, tamano_arr) = color
arrcarrito (2, tamano_arr) = talla
arrcarrito (3, tamano_arr) = cantidad
arrcarrito (4, tamano_arr) = precio
arrcarrito (5, tamano_arr) = peso
Session("arrcarrito") = arrcarrito
end if
arrcart = Session("arrcarrito")
l = 0
r = UBound(arrcart,2) - 1
s = UBound(arrcart,1)
Call QuickSort(arrcart, l, r, 1, s)
Session("arrcarrito") = arrcart

谢谢!

1 个答案:

答案 0 :(得分:0)

当最后一个维度值小于0或任何其他维度值与首次创建阵列时使用的原始值不同时,Redim Preserve会发生此错误。

我认为你的代码失败的唯一原因是某些其他页面已经篡改了会话值,因此返回的数组不是你期望的那样。

也许编写另一个页面时更好地理解数组是如何工作的,因此第一个维度使用UBound为5,因为没有使用第六个条目?