2012-07-26 137 views
1

我需要你的帮助。就在我传统的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

适用于我的机器。从你的代码看来,你误解了数组边界是如何工作的。在VBScript中,这个'Redim arr(1,1)'创建一个2×2的数组,其两个维度的LBound为0,UBound为1.这种方法与其他通常定义长度的语言不同。也许如果你用这些知识调整你的代码,问题可能会消失。这就是说,我无法看到你的代码在你指明的点上失败,并测试它的一个版本,我不能再现问题。你也许会发现'tamano_arr'结尾的值是什么。 – AnthonyWJones 2012-07-27 08:24:18

+0

'QuickSort'的代码是什么?它可能会改变数组,使其他东西。 – 2012-07-29 07:38:30

回答

0

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

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

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

+0

错误是客户需要很长时间才能完成订单,在我的服务器上我有300分钟的会话IIS购买我认为是不够的。当脚本寻找var arrcarrito这个不存在更多,它会产生错误。我是对的?你认为一个可能的解决方案来解决它? – alvaroms 2012-07-31 17:17:52

+0

@alvaroms:我看不到会话过期会导致这个错误。如果会话已过期,您包含的代码将不会到达第71行。 – AnthonyWJones 2012-07-31 17:56:41

+0

我认为var arrcarrito并不存在,因为消费者需要很长时间才能完成项目的添加。是否有可能? – alvaroms 2012-07-31 18:37:03

相关问题