4 テーブル系 - テーブル名と全フィールド名/データ型を収集する

カレントデータベース内にある各テーブルを構成するフィールドについて、それぞれのフィールド名およびデータ型を収集します。
  1. まず「Database」オブジェクトの変数である「dbs」に”カレントデータベース”をセットします。

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

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

  4. 取り出されたテーブル情報のうち、テーブル名である「Name」プロパティの値をイミディエイトウィンドウに出力します。

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

  6. 取り出されたひとつのフィールド情報のうち、フィールド名である「Name」プロパティの値をイミディエイトウィンドウに出力します。

  7. さらに、そのフィールドのデータ型を表す「Type」プロパティ(下表参照)を調べ、Select Caseステートメントでその値に応じたデータ型の名称をイミディエイトウィンドウに出力します。

    ※長整数型については、フィールドの「Attributes」プロパティを調べることによって、通常の長整数型であるか、もしくはオートナンバー型であるかを判別して処理分岐しています。

Sub Sample_1_04()
'テーブル名と全フィールド名/データ型を収集する

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

  Set dbs = CurrentDb
  For Each tdf In dbs.TableDefs
    With tdf
      If ((.Attributes And dbSystemObject) Or _
          (.Attributes And dbHiddenObject)) = 0 Then
        Debug.Print "■" & .Name
        For Each fld In tdf.Fields
          Debug.Print fld.Name,
          Select Case fld.Type
            Case dbText
              Debug.Print "テキスト型"
            Case dbMemo
              Debug.Print "メモ型"
            Case dbByte
              Debug.Print "バイト型"
            Case dbInteger
              Debug.Print "整数型"
            Case dbLong
              If fld.Attributes And dbAutoIncrField Then
                Debug.Print "オートナンバー型"
              Else
                Debug.Print "長整数型"
              End If
            Case dbSingle
              Debug.Print "単精度浮動小数点型"
            Case dbDouble
              Debug.Print "倍精度浮動小数点型"
            Case dbDate
              Debug.Print "日付/時刻型"
            Case dbCurrency
              Debug.Print "通貨型"
            Case dbBoolean
              Debug.Print "Yes/No型"
            Case Else
              Debug.Print "その他"
          End Select
        Next fld
        Debug.Print "------------------"
      End If
    End With
  Next tdf

End Sub


■FieldオブジェクトのTypeの判別に使う組み込み定数
組み込み定数 データ型
dbText テキスト型(短いテキスト)
dbMemo メモ型 (長いテキスト)
dbByte バイト型
dbInteger 整数型
dbLong 長整数型
dbSingle 単精度浮動小数点型
dbDouble 倍精度浮動小数点型
dbDate 日付/時刻型
dbCurrency 通貨型
dbBoolean Yes/No型
dbDecimal 十進型
dbBigInt 多倍長整数型 (大きい数値)
dbLongBinary    ロングバイナリ型(OLEオブジェクト型)   

実行例:


| Index | Prev | Next |



Copyright © T'sWare All rights reserved