Ahm*_*mad 2 oracle triggers plsql oracleforms
我有一个在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;
Run Code Online (Sandbox Code Playgroud)
我尝试过ROLLBACK但是没有将旧值恢复为表单.我也尝试过SYNCHRONIZE,但这没有效果.除了再次通过数据库表以取出值之外,还有其他选择吗?
BEGIN
IF NEW_LOCATION LIKE 'OH01%' THEN
IF NOT :GLOBAL.USER_ID LIKE 'Admin%' THEN
MESSAGEBOX('You are not authorized to select this value');
/* Return it to the original value that was fetched from database */
:BLK_MAT_STG_PLACES_PILE.STG_LOC_ID :=
get_item_property('BLK_MAT_STG_PLACES_PILE.STG_LOC_ID'
,DATABASE_VALUE);
RAISE FORM_TRIGGER_FAILURE;
END IF;
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7857 次 |
| 最近记录: |