【问题标题】:How to disable past dates in oracle apex with no validation如何在没有验证的情况下禁用 oracle apex 中的过去日期
【发布时间】:2020-02-03 04:55:33
【问题描述】:

我在 Apex v4.1 的日期选择器中禁用过去的日期,方法是输入设置为最小日期 +0d 但是当我第二天尝试编辑和保存数据时,该字段显示错误。有人可以帮忙吗。

【问题讨论】:

  • 这样的验证仅在插入新记录的页面上才有意义。我可能会考虑为创建记录和更新记录创建单独的表单,尽管我更喜欢 Littlefoot 的回答。

标签: oracle oracle-apex oracle-apex-5 oracle-apex-5.1


【解决方案1】:

我无法查看图像,但是 - 按照您描述的方式 - 我建议您删除日期选择器项中的 +0d 并创建您自己的验证,其类型为 PL/SQL 函数返回错误文本;它将检查项目值是否等于或大于TRUNC(SYSDATE),例如

if :P1_DATE_ITEM < trunc(sysdate) then
   return ('Error - date has to be larger or equal to today''s date');
end if;

然后将验证的服务器端条件设置为例如ITEM IS NULL,而“item”是表的主键项(或者 - 如果您正在使用 ROWID - 使用它)。

这样做,您将告诉 Apex 仅对新创建的行执行控制(因为它们的主键列值尚未设置,也没有ROWID,因为行未保存到数据库中)。 “旧”行有它,验证不会触发。

【讨论】:

  • 我在一个页面上有超过 50 个日期选择器字段。输入字段验证将需要开发人员的更多努力。没有其他方法吗,它将数据保存在数据库中,用于页面上显示为灰色的日期?
  • 您可以创建一个拒绝无效值的数据库触发器,但您仍然必须命名其中的所有 50 个日期列。也许有一个简单的方法可以摆脱它,但我不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多