|
VAccess
DdfPath と TableName によって特定される現在のテーブルの、フィールドに関する情報を含むバリアント配列を取得または設定します。
FieldList プロパティは、2 次元バリアント配列をカプセル化するバリアントを受け付けます。あるいはそのバリアントを返します。最初の添字はフィールドの 1 つのプロパティを参照し、2 番目の添字はフィールドの序数を参照します。最初の添字が参照するプロパティは次のとおりです。
フィールド情報を設定する場合、バリアント配列は定義される各フィールドの最低量の情報を収容できる必要があります。必要な情報には、テーブルの定義内で一意のフィールド名、有効なデータ型、複数のフィールド長をサポートするデータ型の有効なサイズなどがあります。
この配列のコメント列は、DDFGetFieldComments メソッドが FieldList プロパティを読み取る前に呼び出された場合にのみ追加されることに注意してください。
RefreshLocations が True に設定されている場合は、FieldList を読み取ると、VAccess は DDF ファイルを再読み取りし、DDF に保存されているフィールド情報を取得します。RefreshLocations を True に設定して FieldList を変更しても、すべての変更が即時に DDF 自体へ書き込まれなくなりました。DDF へ変更を実際に書き込むには、ここで DdfAddTable、DdfModifyLocation などを呼び出す必要があります。これは Pervasive PSQL SDK のリリース以降での動作の変更点です。RefreshLocations が False の場合は、FieldList オペレーションはフィールドの VAccess コントロールのメモリ イメージを読み取り、更新します。
DdfTransactionMode と RefreshLocations がともに True に設定されている場合は、FieldList のすべての操作はトランザクション内で実行されます。
'フィールドの取得 Dim fields as Variant VAEngine.RefreshLocations = True VAEngine.DdfGetFieldComments = True VAEngine.TableName = tableName fields = VAEngine.FieldList VAEngine.RefreshLocations = False If Not IsEmpty(fields) For i = 0 to Ubound(fields, 2) 'リスト ボックスにフィールド名を入れる List.AddItem fields(1, i) Next i End If '設定 VAEngine.RefreshLocations = False VAEngine.FieldList = fields 'DDF へ変更を書き込む-RefreshLocations のリセットは不要 VAEngine.DdfAddTable(True)
影響元:DdfTransactionMode、RefreshLocations
|