COPY NAMED SELECTION
COPY NAMED SELECTION ( {aTable ;} name )
引数 | 型 | 説明 | |
---|---|---|---|
aTable | Table | → | セレクションをコピーするテーブル, または 省略した場合デフォルトテーブル |
name | Text | → | 作成する命名セレクションの名前 |
説明
COPY NAMED SELECTION はaTableのカレントセレクションを命名セレクションnameにコピーします。オプションtable引数が指定されていない場合は、そのプロセスのデフォルトテーブルを使用します。name引数にはセレクションのコピーが納められます。そのプロセスにおけるtableのカレントセレクションとカレントレコードは変更されません。
命名セレクションは実際にレコードを含むわけではなく、レコードへの並び順付き参照を含みます。各レコード参照はメモリを4バイト消費します。つまりCOPY NAMED SELECTIONコマンドを使用してセレクションをコピーすると、セレクション内のレコード数 x 4バイト分のメモリが必要となります。命名セレクションはメモリに置かれるため、命名セレクションに必要な分とプロセス内のテーブルのカレントセレクションに必要な分のメモリを確保しなければなりません。
nameが使用したメモリを解放するには、CLEAR NAMED SELECTIONコマンドを使用します
例題
以下の例では、[People]テーブルに未払いの送り状があるかどうかを調べています。セレクションをソートして保存します。請求書が未払いのレコードをすべて検索します。その後、そのセレクションを再利用してメモリ内の命名セレクションを消去します。ソートしたセレクションを後で使いたい場合には、命名セレクションを消去しなくても構いません:
ALL RECORDS([People])
//ユーザにセレクションのソートを許可する
ORDER BY([People])
// 命名セレクションとしてソートしたセレクションを保存
COPY NAMED SELECTION([People];"UserSort")
// 未払いの請求書を検索
QUERY([People];[People]InvoiceDue=True)
// レコードがあれば
If(Records in selection([People])>0)
// ユーザに警告
ALERT("Yes, there are overdue invoices on テーブル.")
End if
// ソート済みの命名セレクションを再利用
USE NAMED SELECTION("UserSort")
// メモリからセレクションを取り除く
CLEAR NAMED SELECTION("UserSort")
参照
CLEAR NAMED SELECTION
CUT NAMED SELECTION
USE NAMED SELECTION