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

Oracle Apex:实现只读字段基于其他字段自动填充并保存

问题描述

现有两张数据表:

select emp_id,dept_name,emp_name,commision from employee_dets;

select emp_id,dept_name, bu,org from emp_profile;

基于EMP_PROFILE表创建了交互式网格,其中EMP_ID字段设为选择列表,对应的SQL语句为:

select emp_name d,emp_id r from employee_Dets;

DEPT_NAME原本是依赖EMP_ID的选择列表,SQL语句为:

select dept_name d, dept_name r from employee_Dets where emp_id= :EMP_ID;

需求是将DEPT_NAME设为只读状态,同时在选择EMP_ID后自动填充对应值并能保存到数据库,但设置为“Always只读”时无法自动填充,需要解决这个问题。

解决方案

方法1:用条件只读替代全局只读

  • 进入交互式网格的DEPT_NAME字段属性设置,把只读模式改成Conditional Read Only
  • 设置只读条件为1=1(始终满足,等效全局只读),这种模式下不会阻断字段依赖EMP_ID的自动赋值逻辑
  • 保存设置后测试:选择EMP_ID时DEPT_NAME会自动填充,且处于只读状态,提交时能正常写入数据库

方法2:通过动态动作实现填充+只读

  1. 先把DEPT_NAME的字段类型改成Text Field,暂不设置只读
  2. 创建第一个动态动作:
    • 触发条件:EMP_ID字段值发生变化时
    • 执行动作:选择Set Value,目标设为DEPT_NAME字段
    • 值来源选SQL Query,输入语句:
      select dept_name from employee_Dets where emp_id = :EMP_ID
      
  3. 创建第二个动态动作:
    • 触发条件:页面加载完成或DEPT_NAME字段值变化后
    • 执行动作:选择Set Property,将DEPT_NAME的readonly属性设为true
  4. 保存后测试:选EMP_ID时DEPT_NAME自动填充并锁定,提交可正常保存

方法3:修改交互式网格源查询(推荐)

直接调整网格的基础查询,关联表自动带出DEPT_NAME,再设置字段只读:

  • 修改交互式网格的源SQL为:
    select 
        ep.emp_id,
        ed.dept_name,
        ep.bu,
        ep.org
    from emp_profile ep
    left join employee_dets ed on ep.emp_id = ed.emp_id
    
  • 进入DEPT_NAME字段属性,设置为Always只读
  • 保留EMP_ID的选择列表设置,选择EMP_ID时,网格会通过关联查询自动带出对应DEPT_NAME,字段只读且提交时正常写入数据库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:12:35