代码之家  ›  专栏  ›  技术社区  ›  W Penfold

基于计算值的oracle apex主/明细关系?

  •  1
  • W Penfold  · 技术社区  · 8 年前

    在里面 Oracle Apex 5.1 ,我想创建一个 master/detail 关系基于计算值的窗体。例如,主值为 'ABC_123' 细节值如下' \\aaaa\bbbb\ABC_123_03-MAR-2017.txt '。对于主值' ABC_123 '我想返回包含' ABC\U 123 '。我无法更改数据库表,因为这是供应商软件。有什么方法可以做到这一点吗 Apex ?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Littlefoot    8 年前

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

    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
    

    现在,转到detail表单的OLD\u RELATIONSHIP\u列属性,并从其 主列(Master Column) 所有物

    接下来,转到NEW\u RELATIONSHIP\u COLUMN properties和 设置 它的Master Column属性设置为Master窗体的Master\u VALUE列。

    就是这样-运行表单,如果一切都设置正确,您将有一段新的关系;踢。我怎么知道?刚刚测试过。