2012-07-26 163 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

相關問題