【问题标题】:How to get recordset into bidimensional array in vbscript?如何将记录集放入vbscript中的二维数组?
【发布时间】:2014-08-18 08:40:32
【问题描述】:

我想在 vbscript 中将一个表放入一个二维数组中(我正在使用 asp 来访问一个 mdb),无论如何,我试图让它像这样:

        'Levels'
        Dim one : one = Array()
        Dim two : two = Array()
        Dim three : three = Array()
        Dim four : four = Array()
        Dim five : five = Array()
        Dim level

        recordset.open sql, connection

        If recordset.RecordCount <> 0 Then
            For Each record In recordset
                level = record("Level")
                Select Case level
                    Case 1
                    Case 2
                    Case 3
                    Case 4
                    Case 5
                End Select
            Next
        End If

但它似乎不起作用,我也不确定二维变量声明是否是正确的做法。

有人可以启发我吗? 提前致谢。

【问题讨论】:

    标签: database multidimensional-array vbscript asp-classic recordset


    【解决方案1】:

    为什么不使用内置的 GetRows() 方法。这会将您的记录集放入一个二维数组中。这是来自w3schools.com 的示例代码,它很好地说明了这种方法:

    <%
    set conn=Server.CreateObject("ADODB.Connection")
    conn.Provider="Microsoft.Jet.OLEDB.4.0"
    conn.Open(Server.Mappath("northwind.mdb"))
    set rs = Server.CreateObject("ADODB.recordset")
    rs.Open "Select * from Customers", conn
    
    'The first number indicates how many records to copy
    'The second number indicates what recordnumber to start on
    p=rs.GetRows(2,0)
    rs.close
    conn.close
    
    'This example returns the value of the first
    'column in the first two records
    response.write(p(0,0))
    response.write("<br>")
    response.write(p(0,1))
    
    'This example returns the value of the first
    'three columns in the first record
    response.write(p(0,0))
    response.write("<br>")
    response.write(p(1,0))
    response.write("<br>")
    response.write(p(2,0))
    %>
    

    【讨论】:

    • 我已经看过这个GetRows(),但是从来没有找到像这个这样的好例子,似乎我分心了,非常感谢,这是真正需要的,顺便说一下你知道怎么做我可以随机化数组的顺序吗?非常感谢,你太棒了!!!
    • 随机化数组的顺序可能并不容易或有效。但是您可以随机化 SQL 查询的结果。如果是 SQL Server 可以添加order by newid() 以随机顺序获取结果。
    • @FranciscoCosta 不会向任何人推荐 w3schools.com 方法(对不起,约翰)。有几点需要注意,If Not rs.EOF Then p = rs.GetRows() 或者您可能会收到 Recordset is closed 错误,然后在尝试访问之前使用 IsArray(p) 检查您是否返回了 Array
    • @FranciscoCosta 您可能会发现这很有帮助,它提供了如何使用GetRows() 的完整示例。 Answer to Why should I close and destroy a recordset?.
    • 谢谢@Lankymart,显然 w3schools 的示例非常基础,只是为了帮助理解它是如何工作的,无论如何感谢您的帮助,尤其是 IsArray() 检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多