在Oracle Apex 5.1
中,我想创建一个master/detail
表单,其中关系基于计算值。例如,主值为'ABC_123'
,详细信息值类似于“\\aaaa\bbbb\ABC_123_03-MAR-2017.txt
”。对于主值“ABC_123
”,我想返回包含“ABC_123
”的所有详细记录。我无法更改数据库表,因为这是供应商软件。有没有办法在Apex
中执行此操作?
答案 0 :(得分:2)
您必须重新设计主 - 细节关系。以下是:由于您在主表中已有适当的列,因此无需执行任何操作。假设它的源查询如下所示:
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列。
它就是 - 运行表格 - 如果一切都设置正确 - 你会有一个新的关系活着&踢。我怎么知道?刚试过它。