我有一个在 Oracle Forms 6i 中运行的表单,它具有表格格式的行,这些行是从数据库中的某个表中填充的。一列启用了 [List_Of_Values] 属性,以允许用户在可能的值中进行选择。
列表中的某些值只有在用户有权执行此操作时才能选择,并且我创建了一个 [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,但没有效果。除了再次通过数据库表提取值之外,还有其他选择吗?