如何将logging集值分配给二维数组

我目前正在使用Excel VBA和SQL查询。 我试图把我放到我的logging集中,并将其转储到一个二维数组,所以我可以在函数的后面部分使用这些信息。 问题是我只知道从logging集中提取信息的两种方法:CopyFromRecordset和rs.Fields。

这是我正在尝试的代码。

Dim ID_Array(150, 2) As String Set rs = New ADODB.Recordset Set oConn = New ADODB.Connection strSql = "select id, name from groups" rs.Open strSql, oConn Do While Not rs.EOF With ActiveSheet For Index = 0 To 171 ID_Array(Index, 0) = CStr(rs.Fields(0).Value) 'Safety check to make sure the value isn't null (was having problems before) If rs.Fields(1).Value <> Null Then ID_Array(Index, 1) = CStr(rs.Fields(1).Value) End If rs.MoveNext Next End With Loop rs.Close 

我很积极,我没有正确地分配这些值,因为当我从logging集中拉出它们时,很多是错误的或不显示(名称部分,特别是,甚至不会显示为MsgBox命令上的string,所以我假设它没有正确分配)。

有人对此有经验吗? 如何将rs的ID部分分配给ID_Array的第一维,并将rs的名称部分分配给ID_Array的第二维?

如果使用ADODB.Recordset ,则不需要内部循环。

尝试使用这个代码,应该工作:

 Dim ID_Array() As String Set rs = New ADODB.Recordset Set oConn = New ADODB.Connection strSql = "select id, name from groups" rs.Open strSql, oConn Index = 0 Do While Not rs.EOF 'With ActiveSheet 'For Index = 0 To 171 you dont need for..next, Do While Not rs.EOF show you record one by one ReDim Preserve ID_Array(1, Index) ID_Array(0, Index) = CStr(rs.Fields(0).Value) 'Safety check to make sure the value isn't null (was having problems before) If rs.Fields(1).Value <> vbNullString Then ID_Array(1, Index) = CStr(rs.Fields(1).Value) End If Index = Index + 1 rs.MoveNext 'Next 'End With Loop rs.Close End Sub 

为了避免NULL错误,请更新您的查询以包含NVL函数并用空格replace。 修剪你的.Value,你应该全部设置。 请注意,replace为空string['']不起作用。 另外,请注意所需格式化的数据库字段,如date。 如果不是匹配的格式,则replace值会出错。

NVL(SQL_FieldName,' ')作为New_SQL_FieldName