Microsoft VBScript运行时错误'800a0009'ASP
我需要你的帮助。就在我传统的ASP应用程序中的购物车中添加项目,会出现此错误(不总是)Microsoft VBScript运行时错误'800a0009'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
谢谢!
当最后一个维度值小于0或者任何其他维度值与首次创建数组时使用的原始值不同时,此错误发生在Redim Preserve
之间。
我认为你的代码失败的唯一原因是某个其他页面已经篡改了会话值,使得返回的数组不是你所期望的。
也许另一个页面写得更好地理解数组是如何工作的,因此第六个条目没有被使用,所以第一个维度使用5的UBound?
错误是客户需要很长时间才能完成订单,在我的服务器上我有300分钟的会话IIS购买我认为是不够的。当脚本寻找var arrcarrito这个不存在更多,它会产生错误。我是对的?你认为一个可能的解决方案来解决它? – alvaroms 2012-07-31 17:17:52
@alvaroms:我看不到会话过期会导致这个错误。如果会话已过期,您包含的代码将不会到达第71行。 – AnthonyWJones 2012-07-31 17:56:41
我认为var arrcarrito并不存在,因为消费者需要很长时间才能完成项目的添加。是否有可能? – alvaroms 2012-07-31 18:37:03
适用于我的机器。从你的代码看来,你误解了数组边界是如何工作的。在VBScript中,这个'Redim arr(1,1)'创建一个2×2的数组,其两个维度的LBound为0,UBound为1.这种方法与其他通常定义长度的语言不同。也许如果你用这些知识调整你的代码,问题可能会消失。这就是说,我无法看到你的代码在你指明的点上失败,并测试它的一个版本,我不能再现问题。你也许会发现'tamano_arr'结尾的值是什么。 – AnthonyWJones 2012-07-27 08:24:18
'QuickSort'的代码是什么?它可能会改变数组,使其他东西。 – 2012-07-29 07:38:30