oracle - 在 oracle 10g 中禁用特定时间的表单按钮

标签 oracle oracle10g oracleforms formbuilder

我想在非工作时间(即上午 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;

enter image description here

最佳答案

此代码应在表单触发器内部创建,而不是在转换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/

相关文章:

database - 将 unicode 文本插入 Oracle 数据库表

SQL 错误 : ORA-00907: missing right parenthesis 00907. 00000 - "missing right parenthesis"

oracle - 如何读取数据 block 并将其存储到数据库中?

Oracle 表单 : How to disable/enable certain blocks or fields in form by switching radio buttons?

java - 如何从Oracle连接到Java程序

sql - 更新查询在 SQL Server 中运行,但不在 Oracle 中运行

Oracle TO_DATE 令人头痛

oracle - 如何从 Oracle 获取数据并将其发送到 statsd 或直接发送到 InfluxDB?

oracle - 如何返回新插入的记录列值

oracle - 物化 View 创建速度很快,但刷新需要几个小时