В Oracle Apex 5.1
я хотел бы создать master/detail
форму, в которой отношение основано на вычисленном значении. Например, главное значение - 'ABC_123'
, а подробное значение - как «\\aaaa\bbbb\ABC_123_03-MAR-2017.txt
». Для основного значения «ABC_123
» я хочу вернуть все подробные записи, содержащие «ABC_123
». Я не могу изменить таблицы базы данных, потому что это программное обеспечение поставщика. Есть ли способ сделать это в Apex
?
oracle apex отношения мастер / деталь на основе вычисленного значения?
Ответы (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 Column значение столбца MASTER_VALUE основной формы.
Вот и все - запустите форму и - если все настроено правильно - у вас будут новые отношения живыми и здоровыми. Откуда мне знать? Просто протестировал.