2013-03-28 2 views
1

Я пытаюсь заполнить 2D-массив элементами в наборе записей, но я продолжаю получать следующую ошибку: Ошибка выполнения Microsoft VBScript '800a0009' Подзаголовок за пределами допустимого диапазона: UBound 'Заполнение двухмерного массива с помощью набора записей в asp-classic

Я также попытался изменить UBound на Ubound (ProxState, 1), но это просто дает мне следующую ошибку в строке после начала цикла «For»: Ошибка выполнения Microsoft VBScript' 800a0009 ' Подзаголовок за пределами допустимого диапазона

Dim ProxCount, LastProx 
ProxCount = 0 
Do While Not objRS.EOF 
    ProxCount = ProxCount + 1 
objRS.MoveNext 
Loop 

LastProx = ProxCount - 1 
objRS.MoveFirst 
Dim ProxState 

ProxState = Array(LastProx,1) 
For i = 0 To UBound(ProxState,0) 
    ProxState(i,0) = objRS("ProximityName") 
    ProxState(i,1) = objRS("InState") 
Next 
+1

'ProxState = Array (LastProx, 1)' does * not * создает двухмерный массив (LastProx x 1), но одномерный массив, содержащий LastProx и 1. –

ответ

0

К сожалению, я предполагаю, что я был неправ об этом. Апология! ПОСЛЕДУЮЩИЕ НЕПРАВИЛЬНЫЕ. Убедившись вы знаете, что Ubound дает количество элементов, так ... если вы измените свой код следующим образом ...

For i = 0 To UBound(ProxState,0)-1 

, то он должен работать

+1

[UBound] (http://msdn.microsoft .com/en-us/library/fhx59d0t% 28VS.84% 29.aspx) дает самый высокий доступный индекс, который в VBScript обычно меньше, чем количество элементов. –

0

Еще один способ:

Dim ProxCount 
Dim ProxState() 
ProxCount = 0 

If (not objRS.Eof) Then 
    ProxCount = objRS.RecordCount 

    ReDim ProxState(ProxCount - 1, 1) 

    For i = 0 To ProxCount - 1 
     ProxState(i, 0) = objRS("ProximityName") 
     ProxState(i, 1) = objRS("InState") 
    Next 

End If 
Смежные вопросы