Option Compare Database
Option Explicit
Function RST_TO_ARR(RST As ADODB.Recordset) As Variant
'记录集转二维数组
Dim I As Long, J As Long, R As Long, F As Long
Dim ARR As Variant
R = RST.RecordCount
F = RST.Fields.Count
If R = 0 Then Exit Function
ReDim ARR(1 To R, 1 To F)
Do While RST.EOF = False
I = I + 1
For J = 1 To F
ARR(I, J) = RST.Fields(J - 1) ' MsgBox arr(I, J), , I
Next
RST.MoveNext
Loop
RST.Close
RST_TO_ARR = ARR
End Function
Function ARR_TO_RST(ARR As Variant, RST As ADODB.Recordset)
'二维数组转记录集
Dim I As Long, J As Long, L As Long
For I = 1 To UBound(ARR)
If RST.State = 0 Then RST.Open
RST.AddNew
For J = 0 To RST.Fields.Count - 1
RST.Fields(J).Value = ARR(I, J + 1) & I
Next
RST.Update
Next
End Function
'======================================================
Function TEST()
Dim RST As New ADODB.Recordset, X As Variant, Y As Variant
'记录集转二维数组
RST.Open "Select A,B,C FROM TA", CurrentProject.Connection, adOpenStatic, adLockReadOnly
If RST.State = 1 Then X = RST_TO_ARR(RST)
RST.Close
'二维数组转记录集
RST.Open "Select A,B,C FROM TA", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
If RST.State = 1 Then Y = ARR_TO_RST(X, RST)
RST.Close
End Function