我有一个动态操作,我想在触发之前在JavaScript条件中执行一些检查。我希望它只显示一个区域,如果从数据库返回到只读字段(P4_NEXT_RENEWAL_DATE)的日期比今天的系统日期晚。Oracle Apex 5中的动态操作无法将日期与Oracle进行比较
我的Oracle表具有日期字段,返回到一个只读页面项目:
P4_NEXT_RENEWAL_DATE
这将返回一个值,如:
下一个续约日期
16-JUL-2017
我有一个动态的动作,看起来如下:
(
(apex.item('P4_RENEWAL_REQUIRED').getValue()=='Yes' && apex.item('P4_RENEWAL_REQUIRED_AGREE').getValue()=='Agree')
||
(apex.item('P4_RENEWAL_REQUIRED').getValue()=='No' && apex.item('P4_RENEWAL_REQUIRED_AGREE').getValue()=='Disagree')
)
&&
Date.parse(apex.item('P4_NEXT_RENEWAL_DATE').getValue()) > new Date()
它是不工作这最后一点,
&& Date.parse(apex.item('P4_NEXT_RENEWAL_DATE').getValue()) > new Date()
,我希望如果我的未来只会显示该区域续约日期晚于今天的日期....但它显示该地区,无论日期是过去还是未来。
我不确定我的只读字段是否返回P4_NEXT_RENEWAL_DATE中日期的字符串版本,或者Apex是否知道它来自Oracle的日期值,所以javascript会将其视为日期值...我有尝试了几个date.parse()方法,但似乎没有任何工作。
我也尝试不使用date.parse,并且使用我将不得不通过返回的原始Date对象的直apex.item.getValue()调用,但没有运气之一:
&& apex.item('P4_NEXT_RENEWAL_DATE').getValue() > new Date()
任何意见赞赏。
我没有在'Date.parse'上找到线索,但我可以告诉你P4_NEXT_RENEWAL_DATE中的值是一个**字符串**例如'16 -JUL-2017' 。所以问题是:Date.parse'可以处理那种格式的字符串吗? –
Oracle为什么会从日期列中获取日期值,然后将其保存在一个页面项中,该页是一个字符串类型的绑定(?)变量?我尝试使用3个Oracle子串将日期分成3部分......然后从部分“2017年7月16日”中构建一个字符串等,但仍然没有欢乐 – smackenzie
Google'Date.parse'和'DD-MMM-YYYY '为解决方案提供建议。 'apex.item'是一个Javascript函数(由Oracle提供),它看到的只是一个“文本”类型的输入,它不查看数据库中的列,因此它不知道它拥有日期值。 –