2013-09-26 25 views
0

我在Oracle Forms中有一個複雜的表單,它在When-Validate-Item觸發器中有一些重新計算邏輯。我的問題是,我希望這個邏輯只在用戶改變了這個項目的值時執行,而不是當它以編程方式改變,就像在表單啓動時填充這個項目一樣。當然,我可以添加一些狀態邏輯來防止以編程方式阻止表單啓動時的驗證邏輯,但這會爲表單增加一些額外的複雜性。防止在Oracle Forms中執行When-Validate-Item

我的問題是,在Oracle Forms中有什麼方法來阻止驗證邏輯被執行,例如,將項目狀態設置爲有效?

回答

1

當值編程方式更改,

set_item_property('block_name.item', item_is_valid, property_true); 
1

有幾種可能的方式來做到這一點取決於你的項目是如何改變和性能上的項目。

1)如果你的項目是數據庫項目,你一個正常的查詢時,驗證項目觸發器將不會觸發時填寫。

2)如果你不與正常的查詢填充它,您可以更改驗證從項目的時間記錄,甚至形成。這樣,只有在您執行提交或離開表單時纔會進行驗證。 3)當然會記錄這些變化,不要讓驗證結束。

PS:通常你不會在你做的事情時,驗證項觸發,這將是當它被從幕後充滿了問題,所以我不知道里面觸發你的代碼是什麼但它只應該是輸入值的驗證,如果這是錯誤的,即使它填充了代碼而不是用戶,它也應該這樣說。

+0

感謝您的答覆。我的想法和你一樣。我以編程方式填充項目,而不是從數據庫查詢中填充。 When-Validate-Item觸發器中的邏輯實際上是包含貨幣轉換和同步的驗證邏輯。有些邏輯可能會被提升到表單級別和提交週期,但這會導致較差的用戶體驗。我有些時候通過跟蹤何時驗證而不是解決這些問題。不好,容易支持,但一個工作的解決方案。 – DJPeter