2 テーブル系 - テーブル名とそのレコード数を収集する

カレントデータベース内にあるテーブル名の一覧とともに、それぞれのテーブルに保存されているレコード数を収集します。
  1. まず「Databaseオブジェクト」の変数である「dbs」に”カレントデータベース”をセットします。

  2. そのデータベース内にあるすべてのテーブルのコレクションである「TableDefs」の中から、For Each〜Nextステートメントでひとつずつテーブル情報を取り出し、「TableDefオブジェクト」の変数「tdf」にセットしていきます。

  3. TableDefsコレクションにはシステムテーブルや隠しテーブルも含まれているので、「Attributes」プロパティの値からテーブル属性を判断し、If文でそれらを除外します。

  4. さらに、同様に「Attributes」プロパティによってそのテーブルがカレントデータベース内にあるローカルテーブルであるか、もしくは外部のデータベースのリンクテーブルであるかを判別します。

  5. もしローカルテーブルであれば、TableDefの「RecordCount」プロパティによって保存レコード数を取得し、その値をイミディエイトウィンドウに出力します。

  6. 一方、リンクテーブルの場合はRecordCountの値は常に「-1」となってしまいますので、「DCount」関数を使ってレコード数を取得し、イミディエイトウィンドウに出力します。

Sub Sample_1_02()
'テーブル名とそのレコード数を収集する

  Dim dbs As Database
  Dim tdf As TableDef

  Set dbs = CurrentDb
  For Each tdf In dbs.TableDefs
    With tdf
      If ((.Attributes And dbSystemObject) Or _
          (.Attributes And dbHiddenObject)) = 0 Then
        Debug.Print .Name,
        If (.Attributes And dbAttachedTable) = 0 Then
          'ふつうのローカルテーブルの場合
          Debug.Print .RecordCount
        Else
          'リンクテーブルの場合
          Debug.Print DCount("*", .Name)
        End If
      End If
    End With
  Next tdf

End Sub

実行例:


| Index | Prev | Next |



Copyright © T'sWare All rights reserved