oracle apex master/detail 关系基于计算值?

oracle apex master/detail relationship based on a calculated value?

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

你们要re-designmaster-detail关系。方法如下:因为您已经在 master table 中有一个合适的列,所以没有什么可做的。假设它的源查询看起来像这样:

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 列。

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