Temat: DAO recordset - liczenie rekordów
@Karol Wojda
Oczywiście jest sposób na policzenie zwróconych kolumn w recordsecie ADO:
Sub test()
Dim rcsTabela As New ADODB.Recordset
rcsTabela.Open "select * from employees", CurrentProject.Connection, adOpenForwardonly , adLockOptimistic
Debug.Print rcsTabela.Fields.Count 'zwraca 11
Set rcsTabela = Nothing
Set dbsBieżąca = Nothing
End Sub
Przy wykorzystaniu zwróconej wartości jesteś w stanie zbudować tabelę o dynamicznej w wielkości:
Sub test()
Dim tabela() As Variant
Dim k As Currency
Dim l As Currency
Dim tabela
Dim rcsTabela As New ADODB.Recordset
rcsTabela.Open "select * from employees", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
k = rcsTabela.Fields.Count
l = rcsTabela.RecordCount
Set rcsTabela = Nothing
Set dbsBieżąca = Nothing
ReDim tabela(0 To l, 0 To k) As String
(...)
End Sub
i zainicjalizować jej wartości podwójną pętlą, ale ja osobiści poleciłbym funkcję getrows(rows,start,fields) - zwraca tabelę (array) budowaną na podstawie recordsetu ADO [dla recordsetu DAO również jest funkcja getrows, ale posiada inną składnię]
Sub test()
Dim tabela() As Variant
Dim rcsTabela As New ADODB.Recordset
rcsTabela.Open "select * from employees", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
tabela = rcsTabela.GetRows()
Debug.Print tabela(1, 100) 'zwraca Jennifer - prawidłowo
Set rcsTabela = Nothing
Set dbsBieżąca = Nothing
End Sub
Pozdrawiam Tomasz Gryzio