You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Forms Developer 6i中修改日期输入格式为ddmmyy转dd-mm-yyyy

在Oracle Developer 6i中实现日期输入格式转换

以下是实现输入ddmmyy格式后自动转换为dd-mm-yyyy的具体操作步骤:

1. 设置日期项基础属性

  • 打开表单设计器,选中目标日期输入项。
  • 在Property Palette中:
    • 若希望先接收纯数字输入,可将项的Data Type设为VARCHAR2(长度设为10,对应最终的dd-mm-yyyy格式);
    • 若保持DATE类型,暂时将Format Mask设为999999,允许输入6位数字。

2. 创建KEY-ENTER触发器

选中日期项,右键选择Triggers -> Create,选择KEY-ENTER触发器(对应按下回车键的动作),输入以下PL/SQL代码:

DECLARE
  v_input VARCHAR2(6);
  v_day   VARCHAR2(2);
  v_month VARCHAR2(2);
  v_year  VARCHAR2(4);
  v_date  DATE;
BEGIN
  v_input := TRIM(:你的块名.你的日期项名); -- 替换为实际的块名和项名
  
  -- 验证输入为6位数字
  IF LENGTH(v_input) != 6 OR NOT REGEXP_LIKE(v_input, '^[0-9]+$') THEN
    MESSAGE('请输入6位数字的日期(格式:ddmmyy)');
    MESSAGE('请输入6位数字的日期(格式:ddmmyy)', 1);
    RAISE FORM_TRIGGER_FAILURE;
  END IF;
  
  -- 拆分日、月、年部分
  v_day := SUBSTR(v_input, 1, 2);
  v_month := SUBSTR(v_input, 3, 2);
  
  -- 自动补全世纪:以50为分界,>50则为19xx,否则为20xx,可按需调整分界值
  v_year := CASE WHEN SUBSTR(v_input, 5, 2) > '50' THEN '19' || SUBSTR(v_input, 5, 2) ELSE '20' || SUBSTR(v_input, 5, 2) END;
  
  -- 验证日期合法性,避免无效日期如31-02-2022
  BEGIN
    v_date := TO_DATE(v_day || '-' || v_month || '-' || v_year, 'DD-MM-YYYY');
  EXCEPTION
    WHEN VALUE_ERROR THEN
      MESSAGE('输入的日期无效,请检查日/月/年');
      MESSAGE('输入的日期无效,请检查日/月/年', 1);
      RAISE FORM_TRIGGER_FAILURE;
  END;
  
  -- 赋值回项:若为VARCHAR2类型则格式化字符串,若为DATE类型直接赋值日期
  :你的块名.你的日期项名 := TO_CHAR(v_date, 'DD-MM-YYYY');
  -- 若为DATE类型,替换为::你的块名.你的日期项名 := v_date;
END;

3. 调整显示格式(可选)

如果项是DATE类型,在Property Palette中将Format Mask设为DD-MM-YYYY,转换后会自动以该格式显示。

补充说明

  • 若需要在项失去焦点时也触发转换,可添加WHEN-VALIDATE-ITEM触发器,复用上述代码逻辑即可。
  • 年份分界值可根据业务需求调整,比如改为30或其他数值。

内容的提问来源于stack exchange,提问作者Rizwan Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:50:36