轉:http://yedward.net/?id=70
Form的validate行為可以由一個總的form級別的validation屬性來控制,可以通過set_form_property來設置成PROPERTY_TRUE 和 PROPERTY_FALSE。當程序的焦點離開當前validation_unit(驗證單元)時候,就會觸發該validation_unit的validate事件,Validation unit的級別又是通過form的validation unit屬性來設置的,有以下屬性值:Default, form, block, record, item。
也就是說當設置validation unit為block時,只有當焦點離開一個block,才會觸發validate,根據valiation unit的不同,validate又可分為validate form, validate block, validate record, validate item。
Validate form:validate form中所有block。
Validate block:validate block中所有record。
Validate record:如果該record為valid,則停止,否則validate該record中所有item,然后觸發WHEN-VALIDATE-RECORD Trigger。
Validate item:如果當前item為valid,則停止,否則執行該item標准check,包括LOV(如果validate_from_list屬性為true),最后觸發WHEN-VALIDATE-ITEM Trigger。
也可以通過validate方法,來強制validate數據(注意:此時若form的validation屬性設置為false,則強制 validate方法也不能validate數據),該方法的有一個參數,可以設定validate的級別:Default_scope,form_scope,block_scope,record_scope,item_scope,如:validate(block_scope)。Validate trigger主要有2個,WHEN-VALIDATE-ITEM以及WHEN-VALIDATE-RECORD,2個trigger都有form級別以及block級別,另外WHEN-VALDATE-ITEM還有item級別。
validate(block_scope)----驗證當前塊
可選參數:DEFAULT_SCOPE :Perform normal validation for the default scope, determined by the runtime platform.
Note: If you change the scope via SET_FORM_PROPERTY(VALIDATION UNIT) and then call VALIDATE(DEFAULT_SCOPE), you will override the default scope as defined in the form module. In this case, Oracle Forms will not validate at the default scope but at the scope defined by SET_FORM_PROPERTY.
FORM_SCOPE: Perform normal validation for the current form.
BLOCK_SCOPE: Perform normal validation for the current block.
RECORD_SCOPE :Perform normal validation for the current record.
ITEM_SCOPE: Perform normal validation for the current item.
