Plsql 使用Oracle ApEx 4.1的可更新Oracle SQL报告

Plsql 使用Oracle ApEx 4.1的可更新Oracle SQL报告,plsql,oracle-apex,Plsql,Oracle Apex,基本上,我有一个基于以下示例SQL查询的SQL可更新报告: select A, B, C from my_table; 基于此报告,我已将B列作为基于命名LOV的选择列表-我还为该列分配了一个id“LOV_SELECT” 这里的C列也是一个文本区域 我的问题是,由于此报告的行数可能不同,因此不确定如何执行此操作,假设此报告返回3行,基于从列B-选择列表中选择的值,我想使用列B选择列表中的此值从表中检索另一个值,然后将此值返回到列C文本字段中,与此选择列表一起使用的值 我想通过一个动态的动作来做

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

select A, B, C from my_table;
基于此报告,我已将B列作为基于命名LOV的选择列表-我还为该列分配了一个id“LOV_SELECT”

这里的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,然后我希望将该值与SDE NAME2一起填充到C列中。

手动表格格式,带有源:

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种可能的解决办法:

  • 使用ajax进程的动态操作

    • 事件:变化
    • 选择类型:jQuery选择器
    • jQuery选择器:。deptno
    • 条件:无条件
    True操作:执行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);
             });
      
    • 不受影响的元素类型

  • 仅动态操作和隐藏项

    • 事件:变化
    • 选择类型:jQuery选择器
    • jQuery选择器:
      .deptno
    • 条件:无条件
    • 真动作:设定值
      • 集合类型:Javascript表达式
      • Javascript表达式:
        $(this.triggeringElement).val()
      • 页面加载时触发:未选中
      • 受影响的元素:
        • 选择类型:项目
        • 项目:
          P37\u FIND\u DEPTNO
    • 真实操作:设置值
      • 集合类型:SQL语句
      • SQL语句:
        从deptno=:P37\u FIND\u deptno所在的部门中选择dname
      • 要提交的页面项目:
        P37\u FIND\u DEPTNO
      • 页面加载时触发:未选中
      • 受影响的元素:
        • 选择类型:项目
        • 项目:
          P37\u查找\u部门否\u结果
    • True操作:执行javascript代码

      • 代码:

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

      • 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个隐藏项,值保护设置为否
      • P37\u FIND\u DEPTNO
      • 第37页\u查找\u部门\u结果

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

    如果这是单记录模式,skillbuilders superlov会工作得很好,但没有真正的表格格式替代方案(有一种,但支持率很低,我觉得它并不优雅)。在页面加载时生成报告时,列C是否已经有值?如果说“那么想使用值“NAME2”执行查询,您的意思是实际使用“NAME2”(即显示值)而不是返回值来执行C的查询吗?对不起,Tom,我实际上指的是返回值,这里与显示值相同。因此,当我更改选择列表中的值时,请转到并执行一个pl/sql查询,该查询根据选择列表返回值从表中检索默认值,并在C列中显示该默认值。很抱歉延迟回复您-感谢您的解决方案。