ActiveX Controls Guide (v11)

辞書ファイルの読み取り (ActiveX アクセス方法)

以前のバージョンの ActiveX アクセス方法は、DDF に含まれる情報の大部分を公開していましたが、特定の情報を取り出すのが非常に困難であったり、ときには不可能なことがありました。また、項目ごとに複数のプロパティ設定が必要だったので、情報の複数の項目を検索することは面倒でした。本バージョンの ActiveX アクセス方法では、これらの問題の解決にバリアント配列を使用しました。バリアントとは、複数のデータ型を表すことができ、かつどのデータ型を現在表しているかがわかる変数の一種です。ActiveX アクセス方法コンテナーはバリアントをサポートします。

バリアント配列はバリアントの一種で、実質的にはバリアントのリストへの参照であり、リストの各項目に異なる型の情報を保持できるものです。この配列は、コード環境によって異なる方法で表されます。Visual Basic では、バリアント配列は myArray(1, 1)のような単なる通常の配列として表示されます。しかし、Visual C++ では、バリアント配列は VT_ARRAY|VT_VARIANT 型のバリアントにすぎず、"SafeArray" システム API を使用して配列の内容を処理する必要があります。

既に述べたように、ActiveX アクセス方法はバリアント配列を使用してコア DDF 情報を公開します。ActiveX インターフェイスが使用する配列は、1 次元として列、2 次元として行を持つ 2 次元配列です。この配列では、Visual Basic ユーザーは ReDim Preserve 関数を使用して行数を変更することができます。列は要求された情報のさまざまな面を表すのに対して、行は項目の集合を表します。たとえば、GetTableList は 2 次元配列を返します。1 次元は 3 つの情報、つまり、TableIDTableName、および TableLocation から構成されているのに対して、2 次元は辞書内のテーブルごとに 1 行を含んでいます。したがって、Visual Basic におけるテーブル名のリストの取得は以下のように行われます。

リスト ボックスに現在の辞書内のテーブル名を設定するには

Dim tableList as Variant 
Dim tableCount as integer 
 
'すべての情報をファイル自体から読み込むことを確認する 
VAccess1.RefreshLocations = True 
 
'DdfPath を設定 - これにより辞書を開く 
VAccess1.DdfPath = "c:¥mydata" 
 
'バリアント配列を取得 
tableList = VAccess1.GetTableList 
'リスト ボックスに名前を入力 - 配列の上限に達するまでループ 
For tableCount = 0 to UBound(tableList, 2) 
   ' リストボックスに配列の正しいメンバーを追加 
   List1.AddItem tableList(1, tableCount)  
Next tableCount 

FieldListIndexList は、ほとんど同じ機能を果たします。ただし、これらはプロパティであるため、配列のエントリを変更したり、エントリを追加することができます。各配列の 1 次元の構造については、FieldListIndexList を参照してください。言うまでもなく、各配列の 2 次元はフィールド数またはインデックス数を表します。


ファイルの内容とメモリ イメージ (ActiveX アクセス方法)

辞書ファイルの変更 (ActiveX アクセス方法)