【发布时间】:2016-08-10 13:27:40
【问题描述】:
正如标题所示,我正在研究将查询内容存储到数组中的不同方法。我一直在尝试不同的方法来做这件事,但似乎这些方法中的大多数在它们的输出中都是正确的。这当然是因为我对如何适当地完成这一点缺乏了解,所以经过一段时间的试验,我决定问什么是最好的方法?到目前为止,我将与您分享我的一些方法,您可以看到我的调查在哪里找到了我。
Dim MyArray() As Variant
MyArray = rst.GetRows(rst.RecordCount)
这是ok,但这会将所有信息垂直而不是水平存储。有没有办法翻转它?那会是通过使用 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#。我认为我更接近我最初的方法,但我决定进行实验可能会让我找到某个地方。
你有什么建议或者可以指出我正确的方向吗?
【问题讨论】:
标签: sql arrays excel recordset vba