На пути отображения структуры вида <Attribute, AttributeValue> в транспонированном виде с помощью hGrid возникла определенная сложность. Ниже описана методика её преодоления.
Итак, есть структура:
SQL> select 1 pk, 'Answer1' answr, 'Y' flag from dual 2 union 3 select 1, 'Answer2', 'Y' from dual 4 union 5 select 1, 'Answer3', 'N' from dual 6 union 7 select 1, 'Answer4', 'N' from dual 8 / PK ANSWR FLAG ---------- ------- ---- 1 Answer1 Y 1 Answer2 Y 1 Answer3 N 1 Answer4 NЭту структуру требуется отобразить в hGrid следующим образом:
Поехали.
1. Транспонируем структуру:
with a as ( select 1 pk, 'Answer1' answr, 'Y' flag from dual union select 1, 'Answer2', 'Y' from dual union select 1, 'Answer3', 'N' from dual union select 1, 'Answer4', 'N' from dual ) select * from a pivot (max(flag) ans FOR answr IN ('Answer1', 'Answer2', 'Answer3', 'Answer4' ));
PK 'Answer1'_ANS 'Answer2'_ANS 'Answer3'_ANS 'Answer4'_ANS ---------- ------------- ------------- ------------- ------------- 1 Y Y N NЧтобы отображать графические элементы, нам необходимо создавать в каждой колонке switcher с кейсами Y и N, а в них прописывать пути к соответствующим пиктограммам. Однако, OA Framework не допускает наличия на одной странице двух элементов с одинаковыми ID. Выход - присвоить флагу каждой колонки уникальный псевдоним. Модифицируем наш запрос:
with a as ( select 1 pk, 'Answer1' answr, 'Y' flag from dual union select 1, 'Answer2', 'Y' from dual union select 1, 'Answer3', 'N' from dual union select 1, 'Answer4', 'N' from dual ) select pk, "'Answer1'_ANS" || decode("'Answer1'_ANS", null, null, 1) Answer1_VO, "'Answer2'_ANS" || decode("'Answer1'_ANS", null, null, 2) Answer2_VO, "'Answer3'_ANS" || decode("'Answer1'_ANS", null, null, 3) Answer3_VO, "'Answer4'_ANS" || decode("'Answer1'_ANS", null, null, 4) Answer4_VO from ( select * from a pivot (max(flag) ans FOR answr IN ('Answer1', 'Answer2', 'Answer3', 'Answer4' )) );
PK ANSWER1_VO ANSWER2_VO ANSWER3_VO ANSWER4_VO ---------- ---------- ---------- ---------- ---------- 1 Y1 Y2 N3 N4Теперь запрос можно использовать во View Object. С описанием структуры колонок hGrid нет никаких затруднений: используем пары {Y1, N1}; {Y2, N2} в качестве кейсов в элементах типа switcher.
Комментариев нет :
Отправить комментарий