方法一、
只需要将“序号”定义成公式,并将公式设置为: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
时间: 2024-10-06 00:30:16