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

Apex交互式报表:已添加记录的显示与更新及勾选框表单填充问题

Oracle APEX 员工信息增删改问题解决方案

一、修复更新页表单为空的问题

  • 设置报表勾选框的链接参数
    直接在首页交互式报表的勾选列(通常是自定义表主键或ROWID)的链接属性里,把主键值(假设自定义表主键是ID)传递给更新页:链接目标选页面3,请求设为EDIT,添加参数P3_ID(更新页对应主键的页面项),参数值填#ID#(报表中的主键列标识)。
  • 配置更新页表单的数据源
    要么直接基于自定义表自动生成表单,勾选需要的字段,系统会自动把页面项和数据库列绑定,同时配置好主键项P3_ID的数据获取逻辑;要么手动给每个表单项(比如P3_EMPNO、P3_ENAME)设置来源类型为「数据库列」,来源表选你的自定义表,来源列对应字段,确保P3_ID能正确接收首页传过来的值。
  • 添加页面加载时的数据拉取过程
    在更新页的「页面加载」环节加一段PL/SQL代码,确保页面加载且P3_ID有值时,从自定义表拉取数据填充表单:
    DECLARE
    BEGIN
      SELECT EMPNO, ENAME, MARITAL_STATUS, GENDER, BIRTH_DATE, LOCATION, LEAVE_TYPE
      INTO :P3_EMPNO, :P3_ENAME, :P3_MARITAL_STATUS, :P3_GENDER, :P3_BIRTH_DATE, :P3_LOCATION, :P3_LEAVE_TYPE
      FROM 你的自定义表名
      WHERE ID = :P3_ID;
    EXCEPTION
      WHEN NO_DATA_FOUND THEN
        APEX_APPLICATION.G_ERROR_MESSAGE := '未找到对应记录';
    END;
    

二、实现添加页自动拉取标准表数据

  • 给EMPNO项加动态动作
    在添加页的P2_EMPNO页面项上创建动态动作:
    • 触发条件选「失去焦点」,且P2_EMPNO不为空;
    • 动作类型选「执行PL/SQL代码」,代码如下:
      DECLARE
      BEGIN
        SELECT ENAME, MARITAL_STATUS, GENDER, BIRTH_DATE
        INTO :P2_ENAME, :P2_MARITAL_STATUS, :P2_GENDER, :P2_BIRTH_DATE
        FROM EMP -- 替换成实际的Oracle标准员工表名
        WHERE EMPNO = :P2_EMPNO;
      EXCEPTION
        WHEN NO_DATA_FOUND THEN
          APEX_APPLICATION.G_ERROR_MESSAGE := '该员工编号不存在';
      END;
      
    • 设置「页面项要提交」为P2_EMPNO,「返回页面项」填P2_ENAME,P2_MARITAL_STATUS,P2_GENDER,P2_BIRTH_DATE,执行后这些项会自动填充数据。
  • 完善插入逻辑
    确保EventAddRecord事件的PL/SQL插入代码包含所有字段,只留LOCATION和LEAVE_TYPE让用户手动输入:
    INSERT INTO 你的自定义表名 (EMPNO, ENAME, MARITAL_STATUS, GENDER, BIRTH_DATE, LOCATION, LEAVE_TYPE)
    VALUES (:P2_EMPNO, :P2_ENAME, :P2_MARITAL_STATUS, :P2_GENDER, :P2_BIRTH_DATE, :P2_LOCATION, :P2_LEAVE_TYPE);
    

三、配置更新页的记录更新逻辑

在更新页创建「提交处理」过程,类型选PL/SQL,代码如下:

UPDATE 你的自定义表名
SET EMPNO = :P3_EMPNO,
    ENAME = :P3_ENAME,
    MARITAL_STATUS = :P3_MARITAL_STATUS,
    GENDER = :P3_GENDER,
    BIRTH_DATE = :P3_BIRTH_DATE,
    LOCATION = :P3_LOCATION,
    LEAVE_TYPE = :P3_LEAVE_TYPE
WHERE ID = :P3_ID;

设置该处理的触发条件为请求等于SUBMIT(或你设置的更新按钮请求名),点击更新按钮时就会执行这段代码更新记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:25:52