我有一個表格在Oracle Forms 6i中運行,它具有從數據庫中的某個表填充的表格格式行。一列具有[List_Of_Values]屬性,允許用戶在可能的值中進行選擇。如何恢復對Oracle Forms 6i中記錄的更改?
只有當用戶有權這樣做時,才能選擇列表中的某些值,並且創建了[WHEN-VALIDATE-ITEM]觸發器以在值更改後檢查權限。該觸發器引發了一個form_trigger_failure,以防止用戶保存完成的更改。
問題是,如果用戶收到關於缺少選擇值的權限的通知,那麼用戶無法知道先前(舊)值再次選擇它,除非表單被取消導致他的其他(有效)更改也會丟失。
這是我寫的觸發
DECLARE
NEW_LOCATION VARCHAR2(100);
BEGIN
NEW_LOCATION := :BLK_MAT_STG_PLACES_PILE.STG_LOC_ID;
IF NEW_LOCATION LIKE 'OH01%' THEN
IF NOT :GLOBAL.USER_ID LIKE 'Admin%' THEN
MESSAGEBOX('You are not authorized to select this value');
/* What can I write to load the old value to this item? */
RAISE FORM_TRIGGER_FAILURE;
END IF;
END IF;
END;
我已經試過ROLLBACK但沒有恢復舊值,以代碼的形式。我也嘗試了SYNCHRONIZE,但那沒有效果。除了再次通過數據庫表來提取值之外,還有其他選擇嗎?
我在IF THEN條件中犯了一個錯誤,我糾正了它。仍在等待答案。 – Ahmad 2012-07-17 04:41:52
只需檢查是否可以使用全局變量來保存值 – psaraj12 2012-07-17 05:05:37
@ psaraj12我確實檢查過,這就是我能夠解決這個問題的方法。檢查我的答案 – Ahmad 2012-07-17 05:06:52