4D v16.3ARRAY TO SELECTION |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
ARRAY TO SELECTION
ARRAY TO SELECTION
ARRAY TO SELECTIONコマンドは、1つ以上の配列をレコードのセレクションにコピーします。すべてのフィールドは同一テーブルのものでなければなりません。 コマンド呼び出し時にセレクションが存在する場合、配列の並び順とレコードの並び順に基づき、配列要素はレコードに書き込まれます。要素数がレコード数よりも多い場合、新しいレコードを作成します。レコードは、既存でも新規でも、自動的に保存されます。 注: このコマンドは新しいレコードを作成できるため、テーブルの読み込みのみ状態を考慮しません(レコードのロック を参照して下さい)。 すべての配列は同じ要素数でなければなりません。配列のサイズが異なる場合、シンタックスエラーが生成されます。 このコマンドはSELECTION TO ARRAYコマンドとは逆の動作を行います。しかしARRAY TO SELECTIONコマンドは、たとえ自動リレートが設定されていても、リレートテーブルを含む他のテーブルのフィールドを使用することはできません。 * 引数を渡すと、4Dはその行の実行を遅延し、メモリに格納します。* で終わる行を使用して複数の行をスタックできます。スタックされた行は * なしのARRAY TO SELECTION一回の呼び出しですべて実行されます。この目的のため、このコマンドを引数なしで呼び出すことができます。 警告: ARRAY TO SELECTIONコマンドは、既存のレコードの情報を上書きします。十分に注意して使用してください。ARRAY TO SELECTIONコマンド実行中、レコードが他のプロセスによりロックされていると、そのレコードは更新されません。ロックされたレコードは"LockedSet"というプロセスセットに入れられます。ARRAY TO SELECTIONコマンド実行後に"LockedSet"セットをテストして、ロックされていたレコードの存在を知ることができます。 注: このコマンドは、フィールドが含まれているテーブルの読み込みのみ/読み書き状態を考慮しません。 4D Server: このコマンドは4D Server用に最適化されています。配列はクライアントマシンからサーバへ渡され、レコードの修正や追加はサーバ上で実行されます。この処理は同期的に 行われるため、クライアントマシンは処理が正常に終了するまで待機しなくてはなりません。マルチユーザ・マルチプロセス環境では、ロックされたレコードは 上書きされません。 以下の例は、asLastNamesとasCompaniesの2つの配列のデータを[People]テーブルにコピーします。配列asLastNamesのデータは[People]Last Nameフィールドに、配列asCompaniesのデータは[People]Companyフィールドに、それぞれ書き込まれます: ARRAY TO SELECTION(asLastNames;[People]Last Name;asCompanies;[People]Company) オプションの値に応じてフィールドを選択し、そのレコードのセレクションをアーカイブテーブルへとコピーしたい場合を考えます: ARRAY TEXT($_name;0)
参照
|
プロパティ
プロダクト: 4D 履歴
変更: 4D v11 SQL ARTICLE USAGE
ランゲージリファレンス ( 4D v16) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||