procedure p_setvalid(p_onoff varchar2) is /***************************************************************** * A standard procedure allowing users to leave a block with * * required items not yet entered, and to re-set them on * * return to the block * * Usage - before leaving the block * * p_setvalid('on'); * * and on return to the block * * p_setvalid('off'); * * * * Change history * * ============== * * * * Vsn Date By Details * * ====== ====== ======= ===================================== * * 1.0 Jun 98 Mal Original version * * 1.1 Aug 00 Mal Add validation on current item * * * *****************************************************************/ v_block varchar2(10); v_field varchar2(30); v_field_type varchar2(30); v_nextfield varchar2(30); v_blockfield varchar2(30); v_retval varchar2(10); v_required varchar2(5); v_onoff varchar2(3); begin if upper(p_onoff) = 'ON' then v_onoff := 'ON'; else v_onoff := 'OFF'; end if; /* Check that current field is valid if it's not null */ if v_onoff = 'ON' and name_in('system.cursor_value') is not null then p_check_field; end if; v_block := name_in('system.cursor_block'); v_field := get_block_property(v_block,first_item); loop v_blockfield := v_block || '.' || v_field; v_field_type := get_item_property(v_blockfield,item_type); if v_field_type = 'TEXT ITEM' then v_retval := get_item_property(v_blockfield,enabled); if v_retval = 'TRUE' then v_required := get_item_property(v_blockfield,required); if v_required = 'TRUE' then if v_onoff = 'ON' then set_item_property(v_blockfield,item_is_valid); else if name_in(v_blockfield) is null then copy (null,v_blockfield); end if; end if; end if; end if; end if; v_nextfield := get_item_property(v_blockfield,nextitem); if v_nextfield is null then exit; end if; v_field := v_nextfield; end loop; end; =============================================================== procedure p_check_field is begin enter; if not form_success then raise form_trigger_failure; end if; end;