|
以前のバージョンの 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 つの情報、つまり、TableID、TableName、および 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
FieldList と IndexList は、ほとんど同じ機能を果たします。ただし、これらはプロパティであるため、配列のエントリを変更したり、エントリを追加することができます。各配列の 1 次元の構造については、「FieldList」 と 「IndexList」 を参照してください。言うまでもなく、各配列の 2 次元はフィールド数またはインデックス数を表します。
|