ActiveX Controls Guide (v11)

データ ファイルの変更 (ActiveX アクセス方法)

これまで説明してきた変更はすべて、DDF または DDF の ActiveX メモリ イメージにだけ当てはまるものです。ただし、DDF を変更しても、データ ファイル内の実際のレコードの長さや構造は変更されません。この変更を行うには、データ ファイルに直接影響を与える関数を使用する必要があります。

データ ファイルの長さの変更は、1 つの操作で済む問題ではありません。基本的には、データ ファイルを破壊し、新しい長さで再構築する必要があります。既存のファイルに対してこの変更を行う場合は、2 つの VAccess コントロールとテンポラリ ファイルを使用してレコードをコピーする必要があります。たとえば、次のようにします。

テーブルとデータ ファイルにフィールドを追加するには

Dim totalRecs as Integer 
Dim currRec as Integer 
 
'DDF を読めるようにする 
VAccess1.RefreshLocations = True 
VAccess2.RefreshLocations = True 
 
'DDFPath を設定 
VAccess1.DdfPath = "c:¥mydata" 
VAccess2.DdfPath = "c:¥myData" 
 
'テーブルを設定 
VAccess1.TableName = "MyTable" 
VAccess2.TableName = "MyTable" 
 
'メモリ イメージのみを使用 
VAccess1.RefreshLocations = False 
VAccess2.RefreshLocations = False 
 
'上記ルーチンを使用して VAccess2 メモリ イメージに新規フィールドを追加 
AddNewField 
 
'実際のデータ ファイルを作成し DDF を更新 
'VAccess1 のメモリ イメージは更新されない 
VAccess2.RefreshLocations = True 
VAccess2.DdfCreateTable True 
 
'テーブルを一時的に別の場所に割り当てる 
VAccess2.RefreshLocations = False 
VAccess2.DdfModifyLocation "tempdata.mkd" 
 
'ファイルを開き最初のレコードを取得 
VAccess1.Open 
VAccess2.Open 
VAccess1.GetFirst 
 
'レコードを一方から他方へコピー 
totalRecords = VAccess1.TotalRecords 
currRec = 0 
 
While currRec < totalRecords 
   VAccess2.Buffer(0) = VAccess1.Buffer(0) 
   VAccess2.Insert 'ここにエラー処理を追加 
   VAccess1.GetNext 
   currRec = currRec + 1 
Wend 
 
VAccess1.Close 
VAccess2.Close 
 
' 2 つのデータ ファイルができた(古いデータと新しいデータ) 
' 言語 API を使用して古いデータ ファイルを削除し、 
' 新しいデータ ファイル名を古い名前に変更する 
RenameTempDataFile 
' 正しい場所に置き直す - DDF は既に設定されているので変更しない 
VAccess2.DdfModifyLocation VAccess1.Location 

その他にも、データ ファイルのインデックス構造に対して直接行える変更があります。これらの操作は ActiveX メソッド リファレンスに示されており、DdfAddIndexDdfDropIndex、および DdfDropIndexMaintain などがあります。


辞書の作成 (ActiveX アクセス方法)

その他の DDF 操作 (ActiveX アクセス方法)