我想在非工作时间(即上午 8 点至下午 1 点(8 点至 13 点))从菜单表单中禁用五个按钮(学生、家长、监护人、员工、薪水) 我在 FormBuilder > DatabaseObjects > MyDB(i-e School) >Tables >MENU>Triggers 中对此进行编码 当我保存它时显示错误 错误: PDE-UTG007 触发器包含错误 PLS-00201:必须声明标识符“ENABLED”
BEGIN
IF (TO_CHAR(SYSDATE,'DY') IN ('SAT','SUN')) OR (TO_CHAR(SYSDATE,'HH24:MI') NOT BETWEEN '08:00' AND '13:00')
THEN
set_item_property('control.Student', enabled, property_false);
set_item_property('control.Parent', enabled, property_false);
set_item_property('control.Guardian', enabled, property_false);
set_item_property('control.Employee', enabled, property_false);
set_item_property('control.Salary', enabled, property_false);
RAISE_APPLICATION_ERROR(-20500, 'You can access Database only during normal business hours.');
END IF;
end;
最佳答案
此代码应在表单触发器内部创建,而不是在转换RAISE_APPLICATION_ERROR
的数据库触发器中创建。至MESSAGE('You can...'); MESSAGE()
。您可以将代码嵌入表单过程中,例如
PROCEDURE Disable_Buttons IS
BEGIN
IF (TO_CHAR(SYSDATE, 'DY','NLS_DATE_LANGUAGE=ENGLISH') IN ('SAT', 'SUN')) OR
(TO_CHAR(SYSDATE, 'HH24:MI') NOT BETWEEN '08:00' AND '13:00') THEN
SET_ITEM_PROPERTY('control.Student', enabled, property_false);
SET_ITEM_PROPERTY('control.Parent', enabled, property_false);
SET_ITEM_PROPERTY('control.Guardian', enabled, property_false);
SET_ITEM_PROPERTY('control.Employee', enabled, property_false);
SET_ITEM_PROPERTY('control.Salary', enabled, property_false);
MESSAGE('You can access Database only during normal business hours.');
MESSAGE('');
END IF;
END;
并调用Disable_Buttons
来自WHEN-NEW-FORM-INSTANCE
触发器,以及 WHEN-BUTTON-PRESSED
触发现有代码顶部的这五个按钮,以防止在这些时间段内执行已运行的应用程序 session 的其余代码。
或者更直接地说,您可以添加 Disable_Buttons
进入WHEN-NEW-BLOCK-INSTANCE
control
的触发器 block 而不是单独添加到 WHEN-BUTTON-PRESSED
这五个按钮的触发器。
关于oracle - 在 oracle 10g 中禁用特定时间的表单按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65620089/