4D v14.3

ARRAY TO SELECTION

ホーム

 
4D v14.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つ以上の配列をレコードのセレクションにコピーします。すべてのフィールドは同一テーブルのものでなければなりません。

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

注: このコマンドは新しいレコードを作成できるため、テーブルの読み込みのみ状態を考慮しません([#title id="212"/]を参照して下さい)。

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

このコマンドは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(a1;0)
 ARRAY TEXT(a2;0)
 ARRAY TEXT(a3;0)
 ARRAY TEXT(a4;0)
 
 ALL RECORDS([Table_1])
 For($i;1;Get last field number(1))
    $p:=Get pointer("a"+String($i))
    SELECTION TO ARRAY(Field(1;$i)->;$p->;*)
  // * を使用してコマンドの実行をスタックする
 End for
 SELECTION TO ARRAY // この呼び出しで実行が行われる
 
 REDUCE SELECTION([Table_1];0)
 For($i;1;Get last field number(1))
    $p:=Get pointer("a"+String($i))
    ARRAY TO SELECTION($p->;Field(1;$i)->;*)
  // * を使用してコマンドの実行をスタックする
 End for
 ARRAY TO SELECTION // この呼び出しで実行が行われる

 
プロパティ 

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

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

 
履歴 

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

 
参照 

SELECTION TO ARRAY
システム変数

 
ARTICLE USAGE

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

Inherited from : ARRAY TO SELECTION ( 4D v11 SQL Release 6)