1

助けてください。このエラーは、従来の 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

ありがとう !!

4

1 に答える 1

0

このエラーはRedim Preserve、最後のディメンション値が0未満であるか、他のディメンション値のいずれかが、配列が最初に作成されたときに使用された元の値と異なる場合に発生します。

コードが失敗したと私が考える唯一の理由は、他のページがセッション値を改ざんして、返された配列が期待どおりではないことです。

おそらく、別のページは、配列がどのように機能するかをよりよく理解して書かれているため、6番目のエントリが使用されていないため、最初の次元に5のUBoundを使用しますか?

于 2012-07-27T08:31:00.070 に答える