4D v16.3

ARRAY TO SELECTION

ホーム

 
4D v16.3
ARRAY TO SELECTION

ARRAY TO SELECTION 


 

ARRAY TO SELECTION {( array ; aField {; array2 ; aField2 ; ... ; arrayN ; aFieldN}{; *} )} 
引数   説明
array  配列 in コピー元の配列
aField  フィールド in 配列データを受け取るフィールド
演算子 in 実行をスタックする

説明   

ARRAY TO SELECTIONコマンドは、1つ以上の配列をレコードのセレクションにコピーします。すべてのフィールドは同一テーブルのものでなければなりません。

コマンド呼び出し時にセレクションが存在する場合、配列の並び順とレコードの並び順に基づき、配列要素はレコードに書き込まれます。要素数がレコード数よりも多い場合、新しいレコードを作成します。レコードは、既存でも新規でも、自動的に保存されます。

注: このコマンドは新しいレコードを作成できるため、テーブルの読み込みのみ状態を考慮しません(レコードのロック を参照して下さい)。

すべての配列は同じ要素数でなければなりません。配列のサイズが異なる場合、シンタックスエラーが生成されます。

このコマンドはSELECTION TO ARRAYコマンドとは逆の動作を行います。しかしARRAY TO SELECTIONコマンドは、たとえ自動リレートが設定されていても、リレートテーブルを含む他のテーブルのフィールドを使用することはできません。

* 引数を渡すと、4Dはその行の実行を遅延し、メモリに格納します。* で終わる行を使用して複数の行をスタックできます。スタックされた行は * なしのARRAY TO SELECTION一回の呼び出しですべて実行されます。この目的のため、このコマンドを引数なしで呼び出すことができます。
これにより、QUERYコマンドのように、複雑な文を複数の行に分割して記述することができ、可読性が向上します。また途中の行の挿入も容易です。

警告: ARRAY TO SELECTIONコマンドは、既存のレコードの情報を上書きします。十分に注意して使用してください。ARRAY TO SELECTIONコマンド実行中、レコードが他のプロセスによりロックされていると、そのレコードは更新されません。ロックされたレコードは"LockedSet"というプロセスセットに入れられます。ARRAY TO SELECTIONコマンド実行後に"LockedSet"セットをテストして、ロックされていたレコードの存在を知ることができます。

: このコマンドは、フィールドが含まれているテーブルの読み込みのみ/読み書き状態を考慮しません。

4D Server: このコマンドは4D Server用に最適化されています。配列はクライアントマシンからサーバへ渡され、レコードの修正や追加はサーバ上で実行されます。この処理は同期的に 行われるため、クライアントマシンは処理が正常に終了するまで待機しなくてはなりません。マルチユーザ・マルチプロセス環境では、ロックされたレコードは 上書きされません。

以下の例は、asLastNamesasCompaniesの2つの配列のデータを[People]テーブルにコピーします。配列asLastNamesのデータは[People]Last Nameフィールドに、配列asCompaniesのデータは[People]Companyフィールドに、それぞれ書き込まれます:

 ARRAY TO SELECTION(asLastNames;[People]Last Name;asCompanies;[People]Company)

オプションの値に応じてフィールドを選択し、そのレコードのセレクションをアーカイブテーブルへとコピーしたい場合を考えます:

 ARRAY TEXT($_name;0)
 ARRAY TEXT($_firstname;0)
 ARRAY TEXT($_cv;0)
 ARRAY PICTURE($_photo;0)
 
 SELECTION TO ARRAY([Candidate]Name;$_name;*)
 SELECTION TO ARRAY([Candidate]Firstname;$_firstname;*)
 If(withCV) //CV フィールドを読み込み
    SELECTION TO ARRAY([Candidate]cv;$_cv;*)
 End if
 If(withPhoto) //Photo フィールドを読み込み
    SELECTION TO ARRAY([Candidate]photo;$_photo;*)
 End if
 SELECTION TO ARRAY //コピーを実行
 
 REDUCE SELECTION([Candidate_Archive];0)
 ARRAY TO SELECTION($_name;[Candidate_Archive]Name;*)
 ARRAY TO SELECTION($_prenom;[Candidate_Archive]Firstname;*)
 If(withCV)
    ARRAY TO SELECTION($_cv;[Candidate_Archive]cv;*)
 End if
 If(withPhoto)
    ARRAY TO SELECTION($_photo;[Candidate_Archive]photo;*)
 End if
 ARRAY TO SELECTION



参照 

SELECTION TO ARRAY
システム変数

 
プロパティ 

プロダクト: 4D
テーマ: 配列
番号: 261

このコマンドはLockedSetシステムセットを更新しますこのコマンドはカレントセレクションを変更しますThis command can be run in preemptive processesリモートモードでは動作が異なります。

 
履歴 

変更: 4D v11 SQL
変更: 4D v13

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)