我试图在运行时从记录集的结果创建一个int数组.
Do While Not rstSearchResult.EOF
If rstSearchResult(ID) = blah Then
'Add this Id rstSearchResult(ID) to Array
End If
Call rstSearchResult.MoveNext()
Loop
Run Code Online (Sandbox Code Playgroud)
我需要的是同样的结果,这会给我 Array(35588, 35589, 35595)
Dim myIntArray() as Integer
Dim intDimension as Integer
intDimension = 0
Do While Not rstSearchResult.EOF
If rstSearchResult(ID) = blah Then
'Add this Id rstSearchResult(ID) to Array
REDIM PRESERVE myIntArray(intDimension)
myIntArray(intDimension) = rstSearchResult(ID)
intDimension = intDimension +1
End If
Call rstSearchResult.MoveNext()
Loop
Run Code Online (Sandbox Code Playgroud)
当我需要从Recordset复制到数组时,将数组ReDim到你想要的大小而不是在循环中重新定位它会更有效.
Dim myIntArray() as Integer
Dim intDimension as Integer
rstSearchResult.Filter = "ID = " & blah
ReDim myIntArray(rstSearchResult.RecordCount - 1)
intDimension = 0
Do Until rstSearchResult.EOF
myIntArray(intDimension) = rstSearchResult!ID
intDimension = intDimension + 1
rstSearchResult.MoveNext
Loop
Run Code Online (Sandbox Code Playgroud)
请注意,要使RecordCount正常工作,您需要将记录集打开为静态.
rstSearchResult.Open "tblSearchResult", cnn, adOpenStatic
Run Code Online (Sandbox Code Playgroud)