7 テーブル系 - オートナンバー型のフィールド名とその最小値/最大値を収集する

カレントデータベース内にある各テーブルとフィールドを探索し、”オートナンバー型”のフィールドについて、そこに保存されているレコード上の最小値と最大値を収集します。
  1. まず「Database」オブジェクトの変数である「dbs」に”カレントデータベース”をセットします。

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

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

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

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

  6. 「オートナンバー型」は、データ型が”長整数型”(定数 dbLong)であると同時に”オートナンバー”属性(定数 dbAutoIncrField)を持っています。前者は「Type」プロパティと照合、後者は「Attributes」プロパティと照合することで、その判定を行います。
    『テーブル名と全フィールド名/データ型を収集する』を参照

  7. そのフィールドがオートナンバー型であった場合には、テーブル名とフィールド名(それぞれのオブジェクトの「Name」プロパティの値)をイミディエイトウィンドウに出力します。

  8. さらに、「DMin」関数および「DMax」関数を使い、そのテーブルのそのフィールドについて、保存されているレコード上の最小値と最大値を取得し、イミディエイトウィンドウに出力します。

Sub Sample_1_07()
'オートナンバー型のフィールド名とその最小値/最大値を収集する

  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
        For Each fld In tdf.Fields
          If fld.Type = dbLong And _
              fld.Attributes And dbAutoIncrField Then
            Debug.Print .Name, fld.Name
            Debug.Print " 最小値:" & DMin(fld.Name, .Name),
            Debug.Print " 最大値:" & DMax(fld.Name, .Name)
            Debug.Print
          End If
        Next fld
      End If
    End With
  Next tdf

End Sub

実行例:


| Index | Prev | Next |



Copyright © T'sWare All rights reserved