標籤:
方法一、
只需要將“序號”定義成公式,並將公式設定為:get_block_property(‘block_name‘,current_record)就可以實現了,或者把這行語句放到“When-Create-Record”觸發器中。
缺點:增改刪時,行號不能自動重新整理。
方法二、
在block的三個觸發器中添加相應的代碼:
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中的記錄很多時,由於使用了迴圈操作,所以會影響效率。
為了防止按F11時也產生序號,影響查詢,可以在產生前加入以下條件:
IF (:SYSTEM.MODE != ‘ENTER-QUERY’) THEN
在Oracle Form中,如何?自動編號(行號)的功能