Räkna alla objekt i din databas
Häromdagen fick vårt företag i uppdrag att konvertera många Access-databaser till flera SQL Server-backends. För att få en känsla för de involverade uppgifterna behövde vi ett sätt att räkna alla tabeller, frågor, formulär och makron i varje databas.
Jag gjorde en snabb sökning på Internet men gillade inte någon av kodsnuttarna, så jag skapade mitt eget lilla program som skriver ut statistiken till det omedelbara fönstret:
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
För varje tdf i CurrentDb.TableDefs
If Not Left(tdf.Name, 4) =“MSys” Då
i =i + 1
End If
Next tdf
Debug.Print “Antal tabeller:” &i
"Bestämma antalet frågor
Debug.Print "Antal frågor:" &CurrentDb.QueryDefs.Count
"Bestämma antal formulär
Debug.Print "Antal formulär:" &CurrentProject.AllForms.Count
"Bestämma antalet makron
Debug.Print "Antal makron:" &CurrentProject.AllMacros.Count
"Bestämma antal rapporter
Debug.Print "Antal rapporter:" &CurrentProject.AllReports.Count
End Sub
Ett par observationer:
- För att inte räkna systemtabellerna itererar jag genom TableDef-samlingen och ignorerar alla tabellnamn som börjar med MSys
- Jag kunde inte använda formulärsamlingen för att räkna formulären eftersom dess medlemmar endast består av öppna formulär.
Njut!