ActiveX Controls Guide (v11)

IndexList (ActiveX プロパティ)

適用対象

VAccess

説明

DdfPathTableName によって特定される現在のテーブルの、インデックスに関する情報を含むバリアント配列を取得または設定します。

備考

IndexList プロパティは、2 次元バリアント配列をカプセル化するバリアントを受け付けます。あるいはそのバリアントを返します。最初の添字はインデックス セグメントの 1 つのプロパティを参照し、2 番目の添字はインデックス セグメントの序数を参照します。最初の添字が参照するプロパティは次のとおりです。

添字
名前
バリアント型
説明
0
IndexName
VT_BSTR
インデックスの一意の名前です。最大で 20 文字まで格納できます。
1
IndexNum
VT_I2
インデックス番号(序数)です。
2
SegNum
VT_I2
インデックス内のこのセグメントのシーケンス番号です。
3
FieldName
VT_BSTR
このセグメントによってインデックスを付けられたフィールド名です。最長で半角 20 文字まで使用できます。
4
Flags
VT_I2
インデックス属性ビット フラグ(Btrieve キー フラグ スペックに準拠)です。

インデックス属性は物理データ ファイルとも関連付けられています。このプロパティの設定によって、辞書のインデックスを定義することはできますが、物理データ ファイル内のインデックス属性は変更されません。既存データ ファイルのインデックス属性は、DdfAddIndex メソッド、DdfDropIndex メソッド、DdfDropIndexMaintain メソッドを使用して変更することができます。

RefreshLocationsTrue に設定されている場合は、IndexList を読み取ると、VAccess は DDF ファイルを再読み取りし、DDF に保存されているフィールド情報を取得します。RefreshLocationsTrue に設定して IndexList を変更しても、すべての変更が即時に DDF ファイル自体へ書き込まれなくなりました。DDF へ変更を実際に書き込むには、ここで DdfAddIndexDdfDropIndex、または DdfDropIndexMaintain を呼び出す必要があります。これは Pervasive.SQL 2000 SDK のリリース以降での動作の変更点です。RefreshLocationsFalse の場合は、IndexList オペレーションはインデックスの VAccess コントロールのメモリ イメージを読み取り、更新します。

DdfTransactionModeRefreshLocations がともに True に設定されている場合は、IndexList のすべての操作はトランザクション内で実行されます。

DdfKeyUseIndexDdfOnlyTrue に設定されている場合は、IndexList プロパティは常に DDF にある内容だけを反映します。DdfKeyUseIndexDDFOnlyFalse の場合、IndexList はインデックス情報が更新されるたびにステータス バッファーから正しいインデックス情報を取得し、ステータス バッファーに保持されない情報については DDF を使用します。

Dim indexes as Variant 
'index.ddf からインデックスを取得する 
VAEngine.DdfKeyUseIndexDDFOnly = True 
VAEngine.RefreshLocations = True 
VAEngine.TableName = tableName 
'DDF からインデックスを取得する 
indexes = VAEngine.IndexList 
VAEngine.RefreshLocations = False 
 
'リスト ボックスでインデックス情報を表示する 
List1.Clear 
If Not IsEmpty(indexes) Then 
  For i = 0 to Ubound(indexes,2) 
    Temp = "" 
    For j = 0 to Ubound(indexes, 1) 
      Temp = Temp + CStr(indexes(j, i)) + vbTab 
    Next j 
    List1.AddItem Temp 
  Next i 
End If 
 
'データ ファイルからインデックスを取得する 
VAEngine.RefreshLocations = True 
VAEngine.DdfKeyUseIndexDDFOnly = False 
VAEngine.TableName = tableName 
TrueIndexes = VAEngine.IndexList 
VAEngine.RefreshLocations = False 
List1.AddItem "------------------------" 
 
'リスト ボックスでインデックス情報を表示する 
List1.Clear 
If Not IsEmpty(indexes) Then 
  For i = 0 to Ubound(indexes,2) 
    Temp = "" 
    For j = 0 to Ubound(indexes, 1) 
      Temp = Temp + CStr(indexes(j, i)) + vbTab 
    Next j 
    List1.AddItem Temp 
  Next i 
End If 

関連項目

影響元:RefreshLocations、DdfPath、TableName、DdfTransactionMode


IncludeCurrent (ActiveX プロパティ)

IndexNumber (ActiveX プロパティ)