vbscript不会返回多维数组

时间:2013-08-19 20:38:00

标签: asp-classic vbscript

这真的很烦人。以下是包含在自定义数据库类中的方法。我将数据查询到记录集然后尝试将此数据转换为没有字段名称的数组。它似乎在函数内工作,因为我设置response.write来检查是否有任何值。但是一旦失去了功能,事情就会变得混乱(阵列不一样)。

Public Function To2Array()
    dim A, x, columns
    columns = Rs.Fields.Count
    Rs.MoveFirst()
    x = 0
    do until Rs.EOF
        Redim A(x+1,columns)
        for y = 0 to columns - 1
            A(x,y) = Rs.Fields.Item(y)
                            response.write A(x,y) 'returns correct value
        Next
        x = x + 1       
        Rs.MoveNext()
    loop
    To2Array = A
End Function 

我指定了返回数组,但似乎什么都没有。

arr = db.To2Array()
response.write(arr(1,0)) 'returns nothing

有人能弄明白我做错了吗?

2 个答案:

答案 0 :(得分:3)

  1. 您只能增加VBScript数组的最后一个维度。那么你 需要一个colsXrows数组。
  2. 要保留动态数组的“旧”部分,必须使用ReDim Preserve。
  3. 要从记录集中获取二维数组,请使用.GetRows - 并避免“滚动自己”的所有风险。

答案 1 :(得分:1)

每次重新编辑时,都会丢失A中的值。使用redim preserve可以防止这种情况,但是在使用preserve时只能重新构建最后一个数组维度。