6 テーブル系 - 特定のデータ型のフィールドを収集する

カレントデータベース内にある各テーブルとフィールドを探索し、”特定のデータ型”のフィールドを持ったテーブルとそのフィールド名を収集します。
  1. まず「Database」オブジェクトの変数である「dbs」に”カレントデータベース”をセットします。

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

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

  4. テーブル内にあるすべてのフィールドのコレクションである「Fields」の中から、For Each〜Nextステートメントでひとつずつフィールド情報を取り出し、「Field」オブジェクトの変数「fld」にセットしていきます。

  5. 取り出されたひとつのフィールド情報のうち、そのフィールドのデータ型を表す「Type」プロパティの値を調べます。

  6. それが特定の値(ここでは「dbText/テキスト型(短いテキスト)」)であればテーブル名とフィールド名(それぞれのオブジェクトの「Name」プロパティの値)をイミディエイトウィンドウに出力します。

    ※ここで照合するデータ型定数については、『テーブル名と全フィールド名/データ型を収集する』の組み込み定数の表を参照

Sub Sample_1_06()
'特定のデータ型のフィールドを収集する

  Dim dbs As Database
  Dim tdf As TableDef
  Dim fld As Field
  Dim intFind As Integer

  intFind = dbText

  Set dbs = CurrentDb
  For Each tdf In dbs.TableDefs
    With tdf
      If ((.Attributes And dbSystemObject) Or _
          (.Attributes And dbHiddenObject)) = 0 Then
        For Each fld In tdf.Fields
          If fld.Type = intFind Then
            Debug.Print .Name, fld.Name
          End If
        Next fld
      End If
    End With
  Next tdf

End Sub

実行例:


| Index | Prev | Next |



Copyright © T'sWare All rights reserved