| 4D v13.4DELETE SUBRECORD | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v13.4
 DELETE SUBRECORD 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DELETE SUBRECORD ( subtable ) | ||||||||
| 引数 | 型 | 説明 | ||||||
| subtable | サブテーブル |   | カレントサブレコードを削除するサブテーブル | |||||
バージョン11以降の4Dはサブテーブルをサポートしていません。互換性メカニズムは、変換されたデータベースでコマンドの機能を保護しますが、すべてのサブテーブルをリレートする標準的なテーブルに取り換えることを強くお勧めします。
DELETE SUBRECORDはsubtableのカレントサブレコードを削除します。カレントサブレコードがない場合、DELETE SUBRECORDはその効力を発揮しません。サブレコードが削除されると、subtableのカレントサブセレクションは空になります。従って、サブセレクションをスキャンして選択したサブレコードを削除する用途でDELETE SUBRECORDを使用することはできません。
親のレコードが保存されるまで、サブレコードの削除は永続的ではありません。親のレコードを削除すると、すべてのサブレコードは自動的に削除されます。
サブセレクションを削除するには、削除したいサブセレクションを作成し、最初のサブレコードを削除します。再度、サブセレクションを作成し、最初のサブレコードを削除します。この作業を繰り返します。
一つのサブテーブルのすべてのサブレコードを削除する例を以下に表します。
 ALL SUBRECORDS([People]Children)
 While(Records in subselection([People]Children)>0)
    DELETE SUBRECORD([People]Children)
    ALL SUBRECORDS([People]Children)
 End while子どもの年齢が12歳以上のサブレコードを[People]Childrenサブテーブルから削除する例を以下に表します。
 ALL RECORDS([People]) `すべてのレコードを選択します。
 For($vlRecord;1;Records in selection([People])) `テーブルのすべてのレコード用
  `条件付きサブレコードを持つすべてのレコードをクエリする
    QUERY SUBRECORDS([People]Children;[People]Children'Age>=12)
  `すべてのサブレコードがなくなるまでクエリを繰り返す
    While(Records in subselection([People]Children)>0)
  `サブレコードを削除する
       DELETE SUBRECORD([People]Children)
  `再度クエリする
       QUERY SUBRECORDS([People]Children;[People]Children'Age>=12)
    End while
    SAVE RECORD([People]) `親のレコードを保存する
    NEXT RECORD([People])
 End for
	プロダクト: 4D
	テーマ: サブレコード
	番号: 
        96
        
        
        
	
        
         
        
	変更: 4D v11 SQL  
ALL SUBRECORDS
QUERY SUBRECORDS
Records in subselection
SAVE RECORD