2012-09-26 48 views
3

我正在使用Oracle Forms。我有一個名爲SOLD_TO_CUST_PARTY_NAME的字段。如果我檢測到字段值的變化,我必須執行一個過程。我嘗試過使用when_validate,但即使您只是單擊字段並移動到另一個字段也會執行它(驗證總是會發生,無論您是否更改該值)。無論如何,我可以檢查:old:new或類似的東西來執行一個過程,只有當該字段被修改?Oracle表單中的舊值和新值

編輯: 不能使用個性化設置。它必須用pl/sql完成。

+3

when-validate只會在有更改時觸發,否則不會觸發。某物正在清理您的物品並重新填充它 – Sathya

回答

6

有一個稱爲數據庫值的屬性,可以讓您檢查該字段是否已被修改,以及是否只需要退出驗證觸發器。

Ex。

 
    BEGIN 

    IF :BLOCK.ITEM = GET_ITEM_PROPERTY('BLOCK.ITEM', database_value) THEN 
    RETURN; 
    END IF; 

    /* VALIDATION */ 

    END; 
+0

我想這個構造也用於處理空值。一個簡單的 IF:BLOCK.ITEM!= GET_ITEM_PROPERTY('BLOCK.ITEM',database_value)THEN /* VALIDATION */ END IF; 不會處理這些。 – Rene