4D v14.3DELETE SELECTION |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
DELETE SELECTION
|
DELETE SELECTION {( aTable )} | ||||||||
引数 | 型 | 説明 | ||||||
aTable | テーブル |
![]() |
カレントセレクションを削除するテーブル, または 省略時、デフォルトテーブル | |||||
DELETE SELECTIONは、aTableのカレントセレクションのレコードを削除します。カレントセレクションが空の場合、DELETE SELECTIONは何も行いません。レコードが削除された後、カレントセレクションは空になります。トランザクション処理中に削除されたレコードは、トランザクション処理が実行または取り消されるまで、他のユーザや他のプロセスに対してロックされます。
警告: レコードの削除は、恒久的な操作です。削除が実行されると元に戻すことはできません。
テーブルインスペクターの「レコードを完全に削除」オプションの選択を解除すると、DELETE SELECTION使用時のレコード削除処理を高速にすることができます (4Dデザインリファレンスマニュアルのレコードを完全に削除参照)。
以下の例は[People]テーブルのすべてのレコードを表示します。ユーザはこの中から削除したいものを選択します。この例には2つのメソッドがあります。第1のメソッドはレコードを表示します。第2は削除ボタンのオブジェクトメソッドです。以下は、第1のメソッドです:
ALL RECORDS([People]) ` 全レコードをセレクションに
FORM SET OUTPUT([People];"Listing") ` レコードを一覧するフォームを設定
DISPLAY SELECTION([People]) ` 全レコードを表示
次に示すのは削除ボタンのオブジェクトメソッドです。このボタンは出力フォームのフッタエリアにあります。このオブジェクトメソッドでは、セレクションを削除するために、ユーザが選択したレコード (UserSet) を使用します。ユーザがレコードを1件も選択しなかった場合、DELETE SELECTIONは何も行わないという点に注目してください。
` 本当にレコードを削除するか確認する
CONFIRM("You selected "+String(Records in set("UserSet"))+" people to delete."
+Char(13)+"Click OK to Delete them.")
If(OK=1)
USE SET("UserSet") ` ユーザが選択したレコードを使用
DELETE SELECTION([People]) ` レコードセレクションを削除
End if
ALL RECORDS([People]) ` すべてのレコードを選択
DELETE SELECTIONの実行中にロックされたレコードが見つかると、そのレコードは削除されません。ロックされたレコードはすべて"LockedSet"というセットに納められます。DELETE SELECTIONの実行後、"LockedSet"を調べて、ロックされているレコードが存在していたかどうかを知ることができます。次はループを使用してすべてのレコードを削除します:
Repeat ` ロックされたレコードがある限り繰り返す
DELETE SELECTION([ThisTable])
$lockedRecords:=Records in set("LockedSet")
If($lockedRecords#0) ` ロックされたレコードがあれば
USE SET("LockedSet") ` ロックされたレコードのみをセレクションにする
End if
Until($lockedRecords=0) ` ロックされたレコードがなくなるまで
プロダクト: 4D
テーマ: セレクション
番号:
66
初出: < 4D v6
DISPLAY SELECTION
MODIFY SELECTION
TRUNCATE TABLE
セット
レコードのロック
ランゲージリファレンス ( 4D v12.4)
ランゲージリファレンス ( 4D v14 R2)
ランゲージリファレンス ( 4D v13.5)
ランゲージリファレンス ( 4D v14 R3)
ランゲージリファレンス ( 4D v14.3)
ランゲージリファレンス ( 4D v14 R4)
Inherited from : DELETE SELECTION ( 4D v11 SQL Release 6)