【问题标题】:oracle apex master/detail relationship based on a calculated value?基于计算值的oracle apex主/详细关系?
【发布时间】:2018-03-07 13:30:07
【问题描述】:

Oracle Apex 5.1 中,我想创建一个master/detail 表单,其中关系基于计算值。例如,主值是'ABC_123',详细值类似于“\\aaaa\bbbb\ABC_123_03-MAR-2017.txt”。对于主值'ABC_123',我想返回所有包含'ABC_123'的详细记录。我无法更改数据库表,因为这是供应商软件。 Apex有没有办法做到这一点?

【问题讨论】:

    标签: oracle-apex master-detail


    【解决方案1】:

    您必须重新设计主从关系。方法如下:由于您已经在主表中有一个适当的列,因此无需执行任何操作。假设它的源查询如下所示:

    select id, name, master_value
    from master_table
    

    对于详细表单,其查询如下所示:

    select some_date, some_name,
      old_relationship_column      --> this is used to currently create relationship
      detail_value                 --> it is \\aaaa\bbbb\ABC_123_03-MAR-2017.txt
    from detail_table
    

    您必须找到一种方法来提取价值,然后将其与主表单连接起来。例如:

    SQL> with test (col) as
      2    (select '\\aaaa\bbbb\ABC_123_03-MAR-2017.txt' from dual)
      3  select
      4    substr(col,
      5           instr(col, '\', 1, 4) + 1,
      6           instr(col, '-') - instr(col, '\', 1, 4) - 4) new_rel_col
      7  from test;
    
    NEW_REL
    -------
    ABC_123
    

    详细查询将是

    select some_date, some_name,
      old_relationship_column,      --> irrelevant in new design
      detail_value,                 --> it is \\aaaa\bbbb\ABC_123_03-MAR-2017.txt
      --
      substr(detail_value, 
         instr(detail_value, '\', 1, 4) + 1, 
         instr(detail_value, '-') - instr(detail_value, '\', 1, 4) - 4) 
         new_relationship_column             --> oh yes, we'll use it!
    from detail_table
    

    现在,转到详细信息表单的 OLD_RELATIONSHIP_COLUMN 属性并从其 主列 属性中删除值。

    接下来,转到 NEW_RELATIONSHIP_COLUMN 属性并将其主列属性设置为主表单的 MASTER_VALUE 列。

    就是这样 - 运行表单并且 - 如果一切设置正确 - 你将拥有一个充满活力和活力的新关系。我怎么知道?刚刚测试过了。

    【讨论】:

    • 厉害,我试试看
    • 这很好用。由于我正在向现有页面添加交互式网格,因此我必须在 Apex 允许我设置主列值之前额外指定“主区域”。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 2020-02-25
    • 2012-03-12
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    相关资源
    最近更新 更多