Tæl alle objekter i din database
Forleden fik vores virksomhed til opgave at konvertere en masse Access-databaser til flere SQL Server-backends. For at få en fornemmelse af de involverede opgaver havde vi brug for en måde at tælle alle tabeller, forespørgsler, formularer og makroer i hver database.
Jeg lavede en hurtig internetsøgning, men kunne ikke lide nogen af kodestykkerne, så jeg lavede mit eget lille program, der vil udskrive statistikken til det øjeblikkelige vindue:
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
For hver tdf i CurrentDb.TableDefs
If Not Left(tdf.Name, 4) =“MSys” Så
i =i + 1
End If
Next tdf
Debug.Print “Antal tabeller:” &i
'Bestem antallet af forespørgsler
Debug.Print "Antal forespørgsler:" &CurrentDb.QueryDefs.Count
'Bestem antallet af formularer
Debug.Print "Antal formularer:" &CurrentProject.AllForms.Count
'Bestem antallet af makroer
Debug.Print "Antal makroer:" &CurrentProject.AllMacros.Count
'Bestem antallet af rapporter
Debug.Print "Antal rapporter:" &CurrentProject.AllReports.Count
End Sub
Et par observationer:
- For ikke at tælle systemtabellerne gentager jeg TableDef-samlingen og ignorerer ethvert tabelnavn, der starter med MSys
- Jeg kunne ikke bruge formularsamlingen til at tælle formularerne, da dens medlemmer kun består af åbne formularer.
God fornøjelse!