CftClub.ru
Клуб специалистов ЦФТ-Банк

Создание представления

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
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    Ответить с цитатой
Полезность: Нет оценки
Теория - хорошо, а на практике получается, что не каждая ссылка с продукта на клиента означает, что этот клиент есть владелец продукта.

Поэтому наверное лучше поступить как в хуке, на который Вася обратил внимание, т.е. наплодить юнионов, где четко прописать какие продукты интересуют, и какие референсы использовать для связки конкретного продукта с клиентом.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru