Oracle Formで自動番号(行番号)の機能を実装する方法
1797 ワード
メソッド1、「シーケンス番号」を式として定義し、式をget_に設定するだけです.block_property('block_name',current_record)を実装するか、この行の文を「When-CReate-REcord」トリガに配置します.欠点:削除を追加すると、行番号が自動的に更新されません.
方法2、blockの3つのトリガに対応するコードを追加する:Key-CRerec:
Key - Delrec:
When - Create - Record:
欠点:記録数の少ないtableに適用し、tableに記録が多い場合、ループ操作を使用するため効率に影響します.F 11でもシーケンス番号が生成されないように、クエリに影響を与えるために、生成前にIF(:SYSTEM.MODE!=‘ENTER-QUERY’)THENを加えることができます.
方法2、blockの3つのトリガに対応するコードを追加する:Key-CRerec:
DECLARE LINE NUMBER; BEGIN LINE := :SYSTEM.CURSOR_RECORD; LOOP IF :SYSTEM.LAST_RECORD = 'TRUE' THEN
EXIT; ELSE NEXT_RECORD; :blk.ID := :SYSTEM.CURSOR_RECORD + 1; END IF; END LOOP; GO_RECORD(LINE); CREATE_RECORD; :blk.ID := :SYSTEM.CURSOR_RECORD; END;
Key - Delrec:
DECLARE LINE NUMBER; BEGIN DELETE_RECORD; LINE := :SYSTEM.CURSOR_RECORD; LOOP :blk.ID := :SYSTEM.CURSOR_RECORD; IF :SYSTEM.LAST_RECORD = 'TRUE' THEN
EXIT; ELSE NEXT_RECORD; END IF; END LOOP; GO_RECORD(LINE); END;
When - Create - Record:
:blk.ID := :SYSTEM.TRIGGER_RECORD;
欠点:記録数の少ないtableに適用し、tableに記録が多い場合、ループ操作を使用するため効率に影響します.F 11でもシーケンス番号が生成されないように、クエリに影響を与えるために、生成前にIF(:SYSTEM.MODE!=‘ENTER-QUERY’)THENを加えることができます.