34 既存テーブルのフィールドにインデックスを設定する

テーブルのインデックスに関しては、テーブル定義を表す「TableDef」オブジェクト内の「Index」オブジェクトを使います。

既存テーブルにまだ目的のインデックスがないときは、TableDefオブジェクトの「CreateIndex」メソッドで新規のインデックスを生成します。このメソッドでは引数に”インデックス名”を指定します。インデックス名とは、テーブルのデザインビューから表示されるインデックスの画面において、「インデックス名」の欄に表示されるものです。

このメソッドを実行すると、生成されたIndexオブジェクトが返されます。そのオブジェクト(下記プログラムではidxオブジェクト変数)に対して、「CreateField」メソッドでインデックス設定対象となるフィールド名を指定したり、そのインデックスの属性である「主キー」や「値要求」、「重複あり/なし」などの各種プロパティを設定します。

Indexオブジェクトの生成と設定が完了したら、最後にそれをTableDefオブジェクトの「Indexes」コレクションに追加します。
プログラム

Sub SampleCode_34()
'既存テーブルのフィールドにインデックスを設定する

  Dim dbs As Database
  Dim tdf As TableDef
  Dim idx As Index

  Set dbs = CurrentDb

  'テーブル定義を開く
  Set tdf = dbs.TableDefs("mtbl顧客リスト")

  'テーブルへのインデックス定義の追加
  Set idx = tdf.CreateIndex("顧客番号")
  'インデックス定義へのフィールドの追加
  With idx
    .Fields.Append .CreateField("顧客番号")
    .Primary = True             '主キー
    .Required = True            '値要求はい
  End With
  'インデックス定義をインデックスコレクションに追加
  tdf.Indexes.Append idx

  Set idx = tdf.CreateIndex("生年月日")
  With idx
    .Fields.Append .CreateField("生年月日")
    .Unique = False             '重複あり(なしの場合はTrueを指定)
  End With
  tdf.Indexes.Append idx

  tdf.Indexes.Refresh

End Sub

実行例
■実行前

■実行後
| Index | Prev | Next |



Copyright © T'sWare All rights reserved