4D v14.3

SET EXTERNAL DATA PATH

ホーム

 
4D v14.3
SET EXTERNAL DATA PATH

SET EXTERNAL DATA PATH 


 

SET EXTERNAL DATA PATH ( aField ; path ) 
引数   説明
aField  テキスト, BLOB, ピクチャー in ストレージの場所を設定するフィールド
path  テキスト, 倍長整数 in 外部ストレージのパス名およびファイル名、または
0 = ストラクチャー定義を使用する
1 = デフォルトフォルダーを使用する

説明   

SET EXTERNAL DATA PATHコマンドはaField引数に渡したフィールドの、カレントレコードの、外部ストレージの場所を設定あるいは変更します。

4Dではテキスト、BLOB、およびピクチャー型のフィールドデータをデータファイルの外部に格納することができます。この機能に関する詳細な説明はDesign Referenceマニュアルを参照してください。

このコマンドで指定される設定は、カレントレコードがディスクに保存されるときにのみ適用されます。アプリケーションストラクチャーに設定されたパラメー ターは変更されません。カレントレコードがキャンセルされると、コマンドはなにも行いません。一度コマンドが実行されると、4Dは自動でレコードフィール ドとディスク上のファイルとのリンクを保守します。パスを変更したい場合を除き、再度コマンドを実行する必要はありません。

pathにはカスタムパス名または自動的な場所を指定する定数いずれかを渡すことができます:

  • ファイルへのカスタムパス名
    この場合外部ストレージをカスタムモードで使用することになります。特定の4Dデータベース機能はこのモードを自動では利用できません (Design Reference マニュアル参照)。
    デー タファイルに対する相対パスあるいは絶対パスを指定できます(相対パスを設定するためには、文字列の頭に "../" を渡して下さい)。パスにはストレージファイルのファイル名と拡張子を含めます。拡張子は実際のデータ型と一致 しなければなりません (保存時に自動で変換されることはありません)。システムシンタックスを使用しなければなりません。データベース外部ファイル (databaseName.ExternalData) のデフォルトフォルダーを含むどのフォルダーでも指定できます。この場合、これらのファイルはデータベースが保存されるときに含まれます。フォルダーが存在しない場合、4Dが自動で作成します (適切な権限がないなどのため作成に失敗した場合エラーが生成されます)。
    外部ファイルをデータファイルと同階層か、そのサブフォルダーに保存する場合、4Dは指定されたパスがデータファイルに対し相対的であるとみなし、データファイルフォルダーが移動されたり名称変更されたりした場合でもそのリンクを保守します。
    こ れにより複数のレコードで同じ外部ファイルを共有することが可能な点に留意してください。この外部ファイルに対して行われた変更はすべてのレコードに対し て有効です。この場合、複数のプロセスが同時に同じフィールドを変更できるならば、セマフォーを使用して同時アクセスを制限しなければなりません。そうで なければ外部ファイルが損傷するリスクがあります。
  • 自動的な場所
    Data File Maintenanceテーマの、以下の2つの定数を指定できます:
    定数 コメント
    Use default folder 倍長整数 1 引数として渡されたフィールドのデータはdatabaseName.ExternalDataという名前のデフォルトフォルダーに保存されます。このフォルダーはデータファイルと同歳層に作成されます。このモードでは、外部データを、それがデータファイル内にあるときと同様に、4Dが管理します。
    Use structure definition 倍長整数 0 4Dはストラクチャーに設定されたフィールドデータの格納設定を使用します。外部ストレージから内部ストレージに変更しても、外部ファイルは削除されません。

注: SET EXTERNAL DATA PATHコマンドは4Dローカルモードまたは4D Serverでのみ実行できます。リモートモードの4Dではなにも行いません。

ピクチャーデータが特定のサイズ以上の場合、データをデータファイルの外部に保存します。フォームの保存ボタンに以下のように記述します:

 If(Picture size([Photos]InputField)>1300000)
  // 大きなピクチャーを外部ファイルに保存する
    SET EXTERNAL DATA PATH([Photos]InputField;"C:\\Storage\\LargePicts\\"+String(Record number)+".jpg")
 Else
  // 小さなサイズのデータはストラクチャー定義通りに保存する
    SET EXTERNAL DATA PATH([Photos]InputField;Use structure definition)
 End if

ピクチャーフィールドの中身を、データベースのデータファイル外に相対パスを使って保存したい場合を考えます:

 CREATE RECORD([Photos])
 [Photos]Thumbnail:=$small_pict
 SET EXTERNAL DATA PATH([Photos]Thumbnail;"../custom"+Folder separator+$pictname)
  //データファイル横の"/custom/"フォルダに保存
 SAVE RECORD([Photos])

 
プロパティ 

プロダクト: 4D
テーマ: ストラクチャアクセス
番号: 1134

リモートモードでは動作が異なります。

 
履歴 

初出: 4D v13

 
参照 

Get external data path
RELOAD EXTERNAL DATA

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v14 R3)
ランゲージリファレンス ( 4D v14 R2)
ランゲージリファレンス ( 4D v13.5)
ランゲージリファレンス ( 4D v14.3)
ランゲージリファレンス ( 4D v14 R4)