Conta tutti gli oggetti nel tuo database
L'altro giorno la nostra azienda è stata incaricata di convertire molti database di Access in più backend di SQL Server. Per avere un'idea delle attività coinvolte, avevamo bisogno di un modo per contare tutte le tabelle, le query, i moduli e le macro in ogni database.
Ho fatto una rapida ricerca su Internet ma non mi è piaciuto nessuno dei frammenti di codice, quindi ho creato il mio piccolo programma che stamperà le statistiche nella finestra immediata:
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
Per ogni tdf in CurrentDb.TableDefs
If Not Left(tdf.Name, 4) ="MSys" Then
i =i + 1
End If
Next tdf
Debug.Print “Numero di tabelle:” &i
'Determina il numero di query
Debug.Print "Numero di query:" &CurrentDb.QueryDefs.Count
'Determina il numero di moduli
Debug.Print "Numero di moduli:" e CurrentProject.AllForms.Count
'Determina il numero di macro
Debug.Print "Numero di macro:" &CurrentProject.AllMacros.Count
'Determina il numero di rapporti
Debug.Print "Numero di rapporti:" e CurrentProject.AllReports.Count
End Sub
Un paio di osservazioni:
- Per non contare le tabelle di sistema, eseguo l'iterazione nella raccolta TableDef e ignoro qualsiasi nome di tabella che inizi con MSys
- Non ho potuto utilizzare la raccolta di moduli per contare i moduli poiché i suoi membri sono costituiti solo da moduli aperti.
Divertiti!