2

基本上,我有一个基于以下示例 SQL 查询的 SQL 可更新报告:

select A, B, C from my_table;

根据此报告,我已将 B 列设为基于命名 LOV 的 SELECT LIST - 我还为该列分配了“lov_select”的 id

这里的C列也是一个文本区域

我的问题并且不确定如何执行此操作,因为此报告的行数可能有所不同,假设此报告返回 3 行,基于从 B 列 - 选择列表中选择的值,我想在 B 列选择列表中使用此值从表中检索另一个值,然后将此值返回到 C 列文本字段中,以及使用的此选择列表值。

我想通过动态操作来做到这一点。

例如:

Column A                Column B (select list LOV)   Column C
----------------------- ---------------------------- ------------------------------------
Row 1                   NAME1                        returns 5                       
Row 2                   NAME2                        returns 6
Row 3                   NAME3                        returns 7

因此,如果我更改第 2 行 B 列并选择“NAME2”,然后我想使用值“NAME2”执行查询,该值将返回值 6,然后我希望将其填充到列 C 中。

4

1 回答 1

3

带有源的手动表格形式:

select 
apex_item.text(1, empno) empno,
apex_item.text(2, ename) ename,
apex_item.text(p_idx => 3, p_value => deptno, p_size => 4, p_maxlength => 2, p_attributes => 'class="deptno"') deptno,
apex_item.text(4, null) dname
from emp

2个可能的解决方案:

  1. 使用 ajax 进程的动态操作

    • 事件:变化
    • 选择类型:jQuery 选择器
    • jQuery 选择器:.deptno
    • 条件:无条件

    真正的行动:执行javascript代码

    • 页面加载时触发:未选中

      var lFetchFor = $(this.triggeringElement).val(), 
          lTarget = $(this.triggeringElement).closest('tr').find('input[name="f04"]');
      
      $.post('wwv_flow.show', 
             {"p_request"      : "APPLICATION_PROCESS=fetch_value",
              "p_flow_id"      : $v('pFlowId'),
              "p_flow_step_id" : $v('pFlowStepId'),
              "p_instance"     : $v('pInstance'),
              "x01"            : lFetchFor}, 
             function(data){
                lTarget.val(data);
             });
      
    • 没有受影响的元素类型

  2. 仅动态动作和隐藏项

    • 事件:变化
    • 选择类型:jQuery 选择器
    • jQuery 选择器:.deptno
    • 条件:无条件
    • 真正的行动:设定价值
      • 设置类型:Javascript 表达式
      • Javascript 表达式:$(this.triggeringElement).val()
      • 页面加载时触发:未选中
      • 受影响的元素:
        • 选择类型:项目
        • 项目):P37_FIND_DEPTNO
    • 真正的行动:设定价值
      • 集合类型:SQL语句
      • SQL 语句:select dname from dept where deptno = :P37_FIND_DEPTNO;
      • 要提交的页面项目:P37_FIND_DEPTNO
      • 页面加载时触发:未选中
      • 受影响的元素:
        • 选择类型:项目
        • 项目):P37_FIND_DEPTNO_RESULT
    • 真正的行动:执行javascript代码

      • 代码:

        $(this.triggeringElement).closest('tr').find('input[name="f04"]').val($v ('P37_FIND_DEPTNO_RESULT'));
        
      • 页面加载时触发:未选中

      • 没有受影响的元素类型
    • 2 个隐藏项目,值保护设置为否
      • P37_FIND_DEPTNO
      • P37_FIND_DEPTNO_RESULT

两者都负责获取价值,这取决于您希望如何解决它。

于 2012-11-07T13:47:54.767 回答