2013-03-28 27 views
1

我试图用记录集中的项填充二维数组,但我不断收到以下错误: 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)''不*创建二维(LastProx x 1)数组,但是包含LastProx和1的一维数组。 –

回答

0

哎呀我想我是错了。道歉! 以下内容不正确。 确保你知道UBOUND为您提供了元素的数量,以便...如果你改变你的代码如下...

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

那么它应该工作

+1

[UBound](http://msdn.microsoft.com/zh-cn/ .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