Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
borblik_sn Участник со стажем
Вступление в Клуб: 22.04.2011
|
Вт Ноя 08, 2011 19:40  Создание представления |
|
Полезность: Нет оценки
|
Приветствую, уважаемые!
Такая задачка: требуется создать представление по клиентам, в котором будут перечислятся все продукты для текущего клиента.
Например,
ФИО клиента Ссылка на депозиты клиента Ссылка на кредиты клиента
С чего начать? Какое представление создавать: для просмотра\простое\сложное\ПЛПлюс? |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Ср Ноя 09, 2011 07:23  Re: Создание представления |
|
Полезность: Нет оценки
|
borblik_sn пишет: | Приветствую, уважаемые!
Такая задачка: требуется создать представление по клиентам, в котором будут перечислятся все продукты для текущего клиента.
Например,
ФИО клиента Ссылка на депозиты клиента Ссылка на кредиты клиента
С чего начать? Какое представление создавать: для просмотра\простое\сложное\ПЛПлюс? |
Если представление предназначено для того, чтобы его использовали через АРМ Навигатор, то однозначно для просмотра.
Если для того, чтобы использовать в коде операций, то однозначно для операций.
Рекомендую создавать pl/plus-представление, если вы знакомы с синтаксисом pl/plus и простое, если вам необходим визуальный интерфейс для редактирования представления.
Попробуйте разными способами, током же вас не ударит.
Собственно, ни по простому, ни по сложному виду представлений я вас не проконсультирую, так как поддерживаю только уже готовые (и переделываю их в pl/plus-овые), а новые делаю только pl/plus-овые, так как у них есть ряд достоинств.
Создать pl/plus-представление нефик делать:
1. на свободном месте в выбранном справочнике нажать правую кнопку мыши
2. выбрать Создать->Представление для просмотра->Представление Pl/Plus
3. Ввести название полное и короткое
4. написать
Код: | type main is
select a(a%rowtype) in ::[ИМЯ справочника] all
; | (это как пример, естественно)
5. Нажать кнопку "Применить"
6. отредактировать ширину полей
7. Перейти к полям, установить нужные переходы на другие представления
8. ...
9. Profit! |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Ср Ноя 09, 2011 08:36  Re: Создание представления |
|
Полезность: Нет оценки
|
borblik_sn пишет: | С чего начать? |
Посмотри в ТБП "Кредиты дистрибутивное представление "Список всех кредитов" -как сделан вывод колонки "обеспечение". |
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Ср Ноя 09, 2011 09:52  Re: Создание представления |
|
Полезность: Нет оценки
|
borblik_sn пишет: | Приветствую, уважаемые!
Такая задачка: требуется создать представление по клиентам, в котором будут перечислятся все продукты для текущего клиента.
Например,
ФИО клиента Ссылка на депозиты клиента Ссылка на кредиты клиента
С чего начать? Какое представление создавать: для просмотра\простое\сложное\ПЛПлюс? |
Сер, я бы создал представление вида:
Клиент, Класс продукта, Ссылка на продукт..
Но проблема в том, что на продукте ссылки на клиента нет. Следовательно надо на основе метаданных перебрать все таблички, наследуемые от PRODUCT и имеющие референсы на класс клиента или любого из его родителей.
Вышеописанную логику я бы засунул в пайплайнд, и связал бы с Клиентом и Продуктом в PL+ представлении. |
|
 |
borblik_sn Участник со стажем
Вступление в Клуб: 22.04.2011
|
Ср Ноя 09, 2011 10:20   |
|
Полезность: Нет оценки
|
спасибо всем, пробую! |
|
 |
svn Профи
Вступление в Клуб: 04.02.2008
|
Ср Ноя 09, 2011 10:43   |
|
Полезность: Нет оценки
|
можно что нибудь выудить из хука GET_PRD_CLIENT |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Чт Ноя 10, 2011 09:06  Re: Создание представления |
|
Полезность: 2
|
maestro пишет: |
Сер, я бы создал представление вида:
Клиент, Класс продукта, Ссылка на продукт..
Но проблема в том, что на продукте ссылки на клиента нет. Следовательно надо на основе метаданных перебрать все таблички, наследуемые от PRODUCT и имеющие референсы на класс клиента или любого из его родителей.
Вышеописанную логику я бы засунул в пайплайнд, и связал бы с Клиентом и Продуктом в PL+ представлении. |
А, вон в чем загвоздка...
pl/+-представление:
Код: |
type main is
select a( a%id :cl_id$
a.[NAME] :cl_name$
, nvl((select p('(***)') in ::[PR_CRED] all where p.[CLIENT] = a and rownum < 2),'(...)' :cred$
, nvl((select d('(***)') in ::[DEPN] all where d.[CLIENT] = a and rownum < 2),'(...)') :depn$
...
/*
вместо ... подставить ссылки на клиентов - вот запрос, который показывает, кто из продуктов, каким реквизитом и на какой класс клиентов ссылается:
select class_id, qual, self_class_id from class_tab_columns where class_id in
(select id from classes
start with id = 'PRODUCT'
connect by parent_id = PRIOR id
)
and self_class_id in (
select id from classes where target_class_id in (
select id from classes
start with id = 'CLIENT'
connect by parent_id = PRIOR id) and base_class_id = 'REFERENCE'
)
*/
)
in ::[CLIENT] all
;
pragma set_column(cl_id$, NAME, 'Идентификтаор клиента');
pragma set_column(cl_id$, UNVISIBLE, '2'); -- используем для ссылок
pragma set_column(cl_name$, NAME, 'Имя клиента');
pragma set_column(cred$, NAME, 'Кредиты клиента');
pragma set_column(depn$, NAME, 'Депозиты клиента');
...
|
Теоретически можно это всё оформить макросами.
После этого нужно перейти на закладку "Колонки представления" и настроить переходы на нужные представления нужных продуктов. |
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Чт Ноя 10, 2011 10:05   |
|
Полезность: Нет оценки
|
Теория - хорошо, а на практике получается, что не каждая ссылка с продукта на клиента означает, что этот клиент есть владелец продукта.
Поэтому наверное лучше поступить как в хуке, на который Вася обратил внимание, т.е. наплодить юнионов, где четко прописать какие продукты интересуют, и какие референсы использовать для связки конкретного продукта с клиентом. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|