データベース内のすべてのオブジェクトをカウントする
先日、私たちの会社は、多くのAccessデータベースを複数のSQLServerバックエンドに変換するという任務を負いました。関連するタスクを理解するために、各データベースのすべてのテーブル、クエリ、フォーム、およびマクロをカウントする方法が必要でした。
インターネットで簡単に検索しましたが、コードスニペットが気に入らなかったため、統計をすぐにウィンドウに出力する独自の小さなプログラムを作成しました。
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 Each tdf In CurrentDb.TableDefs
If Not Left(tdf.Name、4)=“ MSys” Then
i =i + 1
End If
Next tdf
Debug.Print「テーブル数:」&i
‘クエリの数を決定する
Debug.Print“ Number of Queries:”&CurrentDb.QueryDefs.Count
‘フォームの数を決定する
Debug.Print“ Number of Forms:”&CurrentProject.AllForms.Count
‘マクロの数を決定する
Debug.Print“ Number of Macros:”&CurrentProject.AllMacros.Count
‘レポートの数を決定する
Debug.Print“ Number of Reports:”&CurrentProject.AllReports.Count
サブの終了
いくつかの所見:
- システムテーブルをカウントしないために、TableDefコレクションを繰り返し処理し、MSysで始まるテーブル名を無視します
- メンバーは開いているフォームのみで構成されているため、フォームコレクションを使用してフォームをカウントできませんでした。
お楽しみください!