一次循环记录集数据10条记录并添加到数组

时间:2016-01-07 09:46:30

标签: vba ms-access

上下文:我正在Microsoft Access数据库中编写Google Maps API,该数据库将表格中的邮政编码作为HTTP GET请求的一部分发送给Google。为了提高我的请求效率,我一次尝试将10个邮政编码一起批量发送给Google。我选择了10,因为Google在其GET API请求中有2000字符限制。

考试问题:使用DAO recordsets,我如何遍历我的Postcodes表,一次循环10条记录并将这10条记录添加到数组中,直到我到达表的结尾?所以从本质上讲,从表中获取10条记录,将它们添加到数组中,然后清除数组,然后获取接下来的10条记录并将它们添加到数组中,然后清除数组......直到我到达表的末尾

到目前为止我的基本代码是:

Public Function CalcGeoData()

    Dim rs As DAO.Recordset
    Dim Postcodes(0 To 10) As String

    ' Begin to loop through the Postcodes in I_Postcodes and update for distance and time from base
    Set rs = CurrentDb.OpenRecordset("Postcodes")
    If Not (rs.EOF And rs.BOF) Then

        rs.MoveFirst

        Do Until rs.EOF = True

            Debug.Print (rs!Postcode)
            Debug.Print "-----------"

            rs.Move 10

        Loop

    End If

    rs.Close
    Set rs = Nothing

End Function

2 个答案:

答案 0 :(得分:0)

在你的循环中:

  • 从i = 1到10创建另一个循环。在该循环内:
    • 将当前记录中的值添加到myArray(i)。
    • 特殊情况:如果到达记录集的末尾,请清除剩余的数组条目。
  • 将数组发送给Google(或做任何你想做的事情)。

将其翻译成代码留作练习。

注意:您可能需要考虑使用VBA Collection而不是使用有效Add method的数组。

答案 1 :(得分:0)

使用return方法:Moving through the Recordset in Access VBA

将它放在一个循环中,在每个循环中拉出10条记录(不是GetRows,如图所示)直到没有更多记录。