Oracle APEX基于Interactive Grid列值勾选复选框按支票号插入记录咨询
Oracle APEX Interactive Grid 选中记录插入实现方案
1. 调整Interactive Grid列配置
首先确保IG的复选框列通过apex_item.checkbox2生成,直接把需要用到的支票号作为复选框的返回值即可,不需要将支票号单独设为apex_item项。你的IG查询语句参考如下结构调整:
SELECT apex_item.checkbox2(p_idx => 1, p_value => CHEQUE_NUMBER) AS select_flag, CHEQUE_NUMBER, -- 其他需要展示的业务列 ... FROM 你的IG源表 -- 这里关联Interactive Report对应的数据源表,带出你需要的支票号即可
这里p_idx => 1对应你用到的APEX_APPLICATION.G_f01数组,完全匹配你现有查询的取值逻辑。
补充说明:如果你用的是IG原生行选择功能,没有自定义
apex_item.checkbox2列,可以通过APEX$ROW_SELECTOR内置列获取选中行的主键,再通过主键关联查询到对应支票号即可,无需额外新增复选框列。
2. 新增PL/SQL插入处理进程
在触发插入操作的按钮对应的提交处理环节,新建一个PL/SQL类型的进程,逻辑如下:
DECLARE v_user_mail VARCHAR2(200); v_amt NUMBER; BEGIN -- 遍历所有选中的复选框记录 FOR i IN 1..APEX_APPLICATION.G_f01.COUNT LOOP -- 复用你原有逻辑查询所需字段 SELECT a.APPROVER_MAIL_ID,b.CHEQUE_AMOUNT INTO v_user_mail,v_amt FROM PDC_STATUS_HISTORY a, PDC_CHEQUE_RANGES b WHERE APPROVAL_LEVEL=2 AND a.RECEIPT_NUMBER=b.RECEIPT_NUMBER AND CHEQUE_NUMBER=APEX_APPLICATION.G_f01(i); -- 替换为你实际的目标表插入逻辑 INSERT INTO 你的目标表(邮箱字段, 金额字段, 支票号字段, 其他业务字段) VALUES(v_user_mail, v_amt, APEX_APPLICATION.G_f01(i), 其他字段值); END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE_APPLICATION_ERROR(-20001, '记录插入失败:'||SQLERRM); END;
3. 配置进程触发条件
将上述PL/SQL进程的执行条件设置为对应插入按钮点击时触发即可,无需额外其他配置。
内容的提问来源于stack exchange,提问作者Abinnaya
相关产品推荐
相关产品推荐

