对日期字段使用动态操作的 Oracle Apex

oracle apex using dynamic action on a date field

提问人:vr_oracle 提问时间:7/4/2023 最后编辑:Or Assayagvr_oracle 更新时间:7/4/2023 访问量:352

问:

我是 oracle apex 的新手,需要一些输入。

有一个用于输入标题信息的表单。因为有一个日期字段:P 100_ENTERED_DATE,如果此字段值小于当前日期,那么我们需要启用另一个字段 :P_100_REASON 并使其成为必填字段。

任何建议都会有很大帮助。

我尝试使用 JS 表达式将客户端条件放入如下所示,但没有奏效。

什么时候: 事件:更改 类型: 项目 商品: :P 100_ENTERED_DATE

客户端条件:Javascript 表达式。

JS 表达式:

var ld_cust_date = apex.item("P102_CUST_REQUEST_DATE").getValue();
var current_date = new Date();

if ((current_date - ld_cust_date) > 2){
    return true
  }  
else {
    return false
}

True Condition:启用该字段(我也想将其设置为必填项,但不确定如何执行此操作) False Conditoin:禁用该字段。

JavaScript Oracle Oracle-Apex 客户端 APEX-代码

评论


答:

1赞 Littlefoot 7/4/2023 #1

这可能是一种选择:

  • 一个页面上有 4 个项目:
    • P100_SYSDATE
      • 隐藏
      • source 是函数体:return to_char(sysdate, 'dd.mm.yyyy');
    • P100_ENTERED_DATE
      • 日期选择器
      • 格式掩码:dd.mm.yyyy
    • P100_DATE_DIFF
      • 隐藏
      • 它将包含 sysdate 和输入日期之间的差异
    • P100_REASON
      • 文本项

在P100_ENTERED_DATE上创建动态操作,该操作在更改事件时触发,并包含 4 个真实操作:

  • 初始化时隐藏原因
    • 操作:隐藏
    • 受影响的元素:P100_REASON
    • 初始化时触发
    • 客户端条件:项目为 null,P100_REASON
  • 设置日期差异
    • 操作:设置值
    • PL/SQL 表达式:to_date(:P100_SYSDATE, 'dd.mm.yyyy') - to_date(:P100_ENTERED_DATE, 'dd.mm.yyyy')
    • 提交项目:P100_SYSDATE、P100_ENTERED_DATE
  • 显示原因:
    • 动作:显示
    • 受影响的元素:P100_REASON
    • 客户端条件:项目>值;P100_DATE_DIFF;0
  • 隐藏原因
    • 操作:隐藏
    • 受影响的元素:P100_REASON
    • 客户端条件:项目 <= 值;P100_DATE_DIFF;0

在P100_REASON上创建验证:

  • type 是函数体,返回错误文本

    if :P100_DATE_DIFF > 0 and :P100_REASON is null then
       return ('Reason is required');
    end if;
    

就是这样。以下是一些测试截图(今天 = SYSDATE = 2023 年 7 月 4 日 04.07.2023)

  • 答:输入的日期是 2023 年 7 月 2 日,因此必须显示“原因”并且必须包含一些值。“提交”按钮引发错误,因为“原因”为空
  • B:输入原因后,页面提交成功
  • C:日期(2023 年 7 月 6 日)在今天之后,因此不应显示“原因”,也不是必需的。提交。。。好吧,提交页面

enter image description here

评论

0赞 vr_oracle 7/4/2023
非常感谢您花时间在这上面。.我会试一试,让你知道它是否有效。