Policz wszystkie obiekty w swojej bazie danych
Któregoś dnia nasza firma miała za zadanie przekonwertować wiele baz danych Access na wiele backendów SQL Server. Aby zorientować się w wykonywanych zadaniach, potrzebowaliśmy sposobu na policzenie wszystkich tabel, zapytań, formularzy i makr w każdej bazie danych.
Zrobiłem szybkie wyszukiwanie w Internecie, ale nie podobał mi się żaden z fragmentów kodu, więc stworzyłem własny mały program, który wyświetli statystyki w bezpośrednim oknie:
Public Sub CountObjects()
Dim qdf As DAO.QueryDef
Dim obj As Object
Dim tdf As DAO.TableDef
Dim i As Long
i =0
Debug.Print CurrentDb.TableDefs.Count
Dla każdego pliku tdf w CurrentDb.TableDefs
Jeśli nie pozostawiono(tdf.Name, 4) =„MSys” Then
i =i + 1
End If
Następny tdf
Debug.Print „Liczba tabel:” &i
‘Określ liczbę zapytań
Debug.Print “Liczba zapytań:” &CurrentDb.QueryDefs.Count
„Określ liczbę formularzy
Debug.Print „Liczba formularzy:” &CurrentProject.AllForms.Count
‘Określ liczbę makr
Debug.Print „Liczba makr:” &CurrentProject.AllMacros.Count
„Określ liczbę raportów
Debug.Print „Liczba raportów:” &CurrentProject.AllReports.Count
Koniec Sub
Kilka uwag:
- Aby nie liczyć tabel systemowych, przechodzę przez kolekcję TableDef i ignoruję każdą nazwę tabeli zaczynającą się od MSys
- Nie mogłem użyć kolekcji Form do zliczania formularzy, ponieważ jej członkowie składają się tylko z otwartych formularzy.
Miłej zabawy!