如何在VBA中将数据从访问表复制到阵列?

use*_*157 2 arrays ms-access access-vba

我正在开发一个程序,它可以从表中的一个字段获取数据,并将整个列放入一个数组中,甚至只是从表本身读取.代码似乎使用了一个表单或其他我想使用数组的东西.

Alb*_*lal 8

这将有效:

Dim rstData    As DAO.Recordset
Dim v          As Variant

Set rstData = CurrentDb.OpenRecordset("select FirstName from FaxBook3")
v = rstData.GetRows(rstData.RecordCount)
Run Code Online (Sandbox Code Playgroud)

"v"现在将是所有名字的数组.如果您的查询有多列,则数组将是/可以是多维的.

  • 您需要将记录集移动到末尾,然后再次返回以成功填充数组,否则您将只能使用“rstData.MoveLast rstData.MoveFirst”获得第一行 (2认同)

Edd*_*die 5

这是一个简单的示例,说明如何获取表中列的内容并将其动态添加到数组中:

Option Compare Database
Option Explicit

Public Sub loadIntoArray()

Dim rstTableName As DAO.Recordset   'Your table
Dim myArray() As String             'Your dynamic array
Dim intArraySize As Integer         'The size of your array
Dim iCounter As Integer             'Index of the array

'Open your table
Set rstTableName = CurrentDb.OpenRecordset("Table1")

If Not rstTableName.EOF Then

    rstTableName.MoveFirst   'Ensure we begin on the first row

    'The size of the array should be equal to the number of rows in the table
    intArraySize = rstTableName.RecordCount - 1
    iCounter = 0
    ReDim myArray(intArraySize) 'Need to size the array

    Do Until rstTableName.EOF

        myArray(iCounter) = rstTableName.Fields("Field1")
        Debug.Print "Item: "; iCounter & " " & myArray(iCounter)

        iCounter = iCounter + 1
        rstTableName.MoveNext
    Loop

End If

If IsObject(rstTableName) Then Set rstTableName = Nothing

End Sub
Run Code Online (Sandbox Code Playgroud)