Rst.GetRows()所得到的数组是
dim rr(rst.Fields.Count,rst.RecordSetCount)
这种数组看起来特别扭.
行数为rst的字段数,列为rst的记录数
要想得到这种数组效果,dim rr(rst.RecordSetCount,rst.Fields.Count),采用下列编程方法.Function RstToArray(Rst As ADODB.Recordset) As Variant
  Dim tempArr()
  
  With Rst
    ReDim tempArr(.RecordCount - 1, .Fields.Count - 1)
    .MoveFirst
    For ii = 0 To .RecordCount - 1
      For jj = 0 To .Fields.Count - 1
        tempArr(ii, jj) = .Fields(jj)
      Next jj
      .MoveNext
    Next ii
  End With
  RstToArray = tempArr
End Function请问各位大侠的问题是.
Rst.GetRows()所得到的数组要想转置成dim rr(rst.RecordSetCount,rst.Fields.Count)目标,真不如用上面编程方法更实用.谢谢

解决方案 »

  1.   

    用getstring方法处理:dim v,a
    v=rs.getstring
    a=split(v,chr(13))这样得到数组a,每个元素中字段的值是用vbtab分割的...
      

  2.   

    谢谢,高手解答.
    按高手的思路,用chr(34)分离记录,chr(9)分离字段.   Dim v, a
        shellRst.MoveFirst
        v = shellRst.GetString
        Debug.Print v
          a = Split(v, Chr(13))
          SS = Split(a(0), Chr(34))
      其数组结构为
      ss(0) = array(1,2,3)
      ss(1) = array(2,3,4)
      ...
     再次感谢高手给提了一个思路,相比较而言,下面这个传统程序更好理解.  Function RstToArray(Rst As ADODB.Recordset) As Variant 
      Dim tempArr()   
      With Rst 
        ReDim tempArr(.RecordCount - 1, .Fields.Count - 1) 
        .MoveFirst 
        For ii = 0 To .RecordCount - 1 
          For jj = 0 To .Fields.Count - 1 
            tempArr(ii, jj) = .Fields(jj) 
          Next jj 
          .MoveNext 
        Next ii 
      End With 
      RstToArray = tempArr 
    End Function