Oracle ApexCreate时间字段HH:MM

时间:2013-07-17 02:52:42

标签: oracle-apex

我是APEX的新手,只有Access体验,因此有一些简单的访问解决方案在APEX中看起来不太容易。我的表格/表格上​​的持续时间字段有困难。

用户需要在HH:MM中指明会议需要多长时间。

  1. 该列中的列应具有哪种数据类型。目前是TIMESTAMP

  2. 如何使字段的输入掩码为“HH:MM”。我希望用户能够输入'0130'并将字段格式化为'01:30'。

  3. 需要报告这些时间,因此我认为以VARCHAR输入数据无济于事。

    非常感谢有关此主题的任何帮助。

    提前谢谢

3 个答案:

答案 0 :(得分:8)

老实说,这不是人们可能认为的那么容易的主题,而且从用户界面的角度来看可能比技术上更多。
最简单的出路?顶点datetimepicker。老实说,如果你对这项技术不熟悉,我建议你使用它,特别是如果你想从最初的javascript / jquery中清除它。
让我们这样说:datepicker很好并且效果很好,但时间真的不是那么棒。

date time picker look

不是那么热门。在您点击“关闭”之前,输入项中的值不会更改。时间组件似乎是最后一秒粗心的补充。然而,它有效。 (但我仍然将字段设置为只读,以便用户无法直接输入文本。)
允许输入文本意味着需要根据正确的格式掩码进行验证。并且格式掩码在jQuery(datepicker)和Oracle中的格式掩码之间有所不同,并且在datepicker中可能无法使用oracle格式掩码,从而增加了更多的复杂性。还没有“实时”日期验证(也不是日期时间),只有内置项验证将检查格式掩码以及提交时触发的内容。

无论如何,我要说看一下。将项目设置为显示为日期选择器,并使用设置下的格式掩码来获取日期时间选择器:
date time picker settings

现在你可以进一步推进它,虽然它会花费一些力气。但有几种选择。
就个人而言,当我实施日期+时间时,我总是将日期与2个字段中的时间分开。 1带有日期组件,1带有时间组件,同时保持隐藏原始值的项目(总共3项)。然后我在日期项上使用datepicker,并在时间项上使用jquery timepicker插件。在提交时,然后将2个值一起添加并在日期中解析它们,并将此值再次放入原始项目中(以允许标准处理对源设置为数据库列的项目进行处理)。
时间戳的一个示例是here,另一个是here。它们并不难实现。他们也有很好的文档。我不想在这里实施它,但我建议你先看看它,看看它让你害怕多少。 (我设置了一个顶级演示,但此刻我的时间有点紧张)。

例如,使用Trent(第二个链接)插件:

  • 将js文件放在apex images目录中。我在我的案例中创建了一个文件夹“/ custom”
  • 将所需的js文件添加到页面中(假设顶点4.2,将其放在javascript文件URL中)

    #IMAGE_PREFIX#libraries/jquery-ui/1.8.22/ui/jquery.ui.slider.js
    #IMAGE_PREFIX#custom/jquery-ui-timepicker-addon.js
    
  • 使用诸如此类的onload代码初始化字段

    $("#P95_DEPARTURE_TIME").timepicker({hourGrid: 4,minuteGrid: 10});
    

最终看起来像这样:

timepicker plugin

如果你想要它,你需要在javascript代码中处理选择器之间的任何进一步交互。不要忘记服务器验证。

对于项目,我的隐藏日期项目具有格式掩码DD-MON-YYYY HH24:MI。格式掩码很重要,因为项是绑定变量,绑定变量是varchar2。 html表单中的值也就是文本。 例如,这是在我显示的日期项目上,具有类似的时间项设置:

date display

然后在提交后的计算中,我再次将这些值粘合在一起并将它们放入m中,以便将值保存到数据库中:

:P95_DEPARTURE_DATE_DISP||' '||:P95_DEPARTURE_TIME

这只是设置的简短指南,但是一旦您对该产品更熟悉,可能会很有趣。

在apex-plugin上还有2个timepicker插件,但老实说,与这些已经存在的精细jquery插件相比,我觉得它们根本没什么用。

给它一些思考并看一下。

答案 1 :(得分:1)

如果宿舍足够了。.

项目:具有自动完成功能的文本字段

SELECT ss|| ':' || dd ss_dd
FROM
 (SELECT to_char(trunc(sysdate)+(level - 1)/ 24,'HH24')ss
  FROM dual CONNECT BY level <= 24),
 (SELECT lpad(mod(15 * level, 60), 2, '0') dd
  FROM dual CONNECT BY level <= 4)

enter image description here

答案 2 :(得分:0)

APEX 4.2:为未来的观看提供一些启示;现在有大量Apex插件用于选择日期/时间或两者都返回日期时间格式的变化,如您所需。对于例如如你的情况HH:MM或HH24:MI。

我个人使用了来自http://www.apex-plugin.com的TimePicker插件,我对推荐没有任何问题。