正如标题所示,我正在研究将查询内容存储到数组中的不同方法。我已经尝试了不同的方法,但似乎大多数方法的输出都是不正确的。这当然是由于我缺乏适当理解所致,因此在尝试了一段时间后,我决定询问什么是最好的方法?我将与您分享我迄今为止的一些方法,您可以看到我的调查结果。
Dim MyArray() As Variant
MyArray = rst.GetRows(rst.RecordCount)
这个方案还可以,但是它将所有信息垂直存储而非水平。有没有办法翻转它? 是通过使用ReDim实现的吗? 还是因为行被存储在数组维度中,所以自然是垂直的?
Index = 0
Do While Not rst.EOF
ReDim Preserve MyArray(1, Index)
MyArray(0, Index) = CStr(rst.Fields(0).Value)
'Safety check to make sure the value isn't null (was having problems before)
If rst.Fields(1).Value <> vbNullString Then
MyArray(1, Index) = CStr(rst.Fields(1).Value)
End If
Index = Index + 1
rst.MoveNext
Loop
sheet.Range("a1:ba10000").Value = MyArray
这个问题是垂直存储数据,但无法正确输出记录,每个记录只输出了前两列信息,其余的被输出为 #N/A#。我想我的原始方法更接近正确答案,但我决定尝试一些实验来找到解决方法。
你们有什么建议或指点吗?
ADODB.resultset
对象转换为数组、集合或字典的更好方法。我必须想到有一种方法可以在不迭代结果集的情况下完成它。 - JNevillADODB.Recordset
对象的.GetRows()
方法将数据转储到数组中似乎是一个可行的方法。由于我今天在使用 Mac,所以还没有进行测试,但感觉应该可以。我已经更新了答案以包含此方法。 - JNevill