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

Представление VS Операция

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
Chekan
Участник со стажем


Вступление в Клуб: 29.11.2012
СообщениеПн Дек 03, 2012 14:55   Представление VS Операция Ответить с цитатой
Полезность: Нет оценки
Создал представление для кредитов, которое принадлежит [PR_CRED] и наследуется потомками. При запуске из ТБП Юридические лица этого представления выборка происходит только из ТБП Юридические лица, а не из всех кредитов(ничего себе!!).
Вобщем это все очевидно, но есть одно но. Создана групповая операция в которой точно такая же выборка(близнец прям), но данные берутся из [PR_CRED] а не из ТБП откуда операцию вызвали. Т.е при вызове из юр лиц, так же в результат заносятся и физ лица и т.д.
Люди добрые,какие движения пальцами нужно сделать с операцией в этом случае? Не хотелось бы создавать отдельную операцию для каждого ТБП
markoff
Участник - экстремал


Вступление в Клуб: 09.06.2009
СообщениеПн Дек 03, 2012 16:56    Ответить с цитатой
Полезность: Нет оценки
в выборке условие
and x%class = this%class
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПн Дек 03, 2012 17:48    Ответить с цитатой
Полезность: Нет оценки
Сломался на фразе выборка из Юр. лиц и Вьюха в PR_CRED.
Что-то тут не вяжется. Какие данные вьюха должна отбирать?

markoff пишет:
в выборке условие
and x%class = this%class

так будет правильнее

Код:
...
x%class = &METHOD$CLASS - короткое имя ТБП, которому принадлежит операция


как вариант указать вьюху через клиент-скрипт и наложить соответствующий фильтр, там же в клиент-скрипте, но тогда макрос работать не будет, придется выкручиваться например через Form1.ClassId
_________________
всегда есть как минимум 2 выхода
Chekan
Участник со стажем


Вступление в Клуб: 29.11.2012
СообщениеВт Дек 04, 2012 05:28    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:
Сломался на фразе выборка из Юр. лиц и Вьюха в PR_CRED.
Что-то тут не вяжется. Какие данные вьюха должна отбирать?

markoff пишет:
в выборке условие
and x%class = this%class

так будет правильнее

Код:
...
x%class = &METHOD$CLASS - короткое имя ТБП, которому принадлежит операция


как вариант указать вьюху через клиент-скрипт и наложить соответствующий фильтр, там же в клиент-скрипте, но тогда макрос работать не будет, придется выкручиваться например через Form1.ClassId


&METHOD$CLASS - пробовал такой вариант, дело в том что операция принадлежит [PR_CRED] и наследуется потомками, при вызове этой операции например из ТБП Юр.лица( из потомка) &METHOD$CLASS возвращает PR_CRED, а не желанное KRED_CORP. В случае вьюхи такое сравнение не нужно, оракл автоматически определяет что выборка должна происходить только из потомка из которого вызвали представление( а в условии выборки стоит in ::[PR_CRED] ), это то что нам нужно. Но в случае операции такой прием не катит(огорчает конечно). Вобщем стоит задача определения ТБП из которого ВЫЗВАЛИ операцию(из какого потомка), а не к которому принадлежит операция. Буду очень рад,если вы мне в этом поможете Smile (мб есть какая то функция). Вьюха - представление для просмотра pl/sql
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Дек 04, 2012 07:51    Ответить с цитатой
Полезность: Нет оценки
Chekan пишет:
Alexsey пишет:
Сломался на фразе выборка из Юр. лиц и Вьюха в PR_CRED.
Что-то тут не вяжется. Какие данные вьюха должна отбирать?

markoff пишет:
в выборке условие
and x%class = this%class

так будет правильнее

Код:
...
x%class = &METHOD$CLASS - короткое имя ТБП, которому принадлежит операция


как вариант указать вьюху через клиент-скрипт и наложить соответствующий фильтр, там же в клиент-скрипте, но тогда макрос работать не будет, придется выкручиваться например через Form1.ClassId


&METHOD$CLASS - пробовал такой вариант, дело в том что операция принадлежит [PR_CRED] и наследуется потомками, при вызове этой операции например из ТБП Юр.лица( из потомка) &METHOD$CLASS возвращает PR_CRED, а не желанное KRED_CORP. В случае вьюхи такое сравнение не нужно, оракл автоматически определяет что выборка должна происходить только из потомка из которого вызвали представление( а в условии выборки стоит in ::[PR_CRED] ), это то что нам нужно. Но в случае операции такой прием не катит(огорчает конечно). Вобщем стоит задача определения ТБП из которого ВЫЗВАЛИ операцию(из какого потомка), а не к которому принадлежит операция. Буду очень рад,если вы мне в этом поможете Smile (мб есть какая то функция). Вьюха - представление для просмотра pl/sql


Если операция простая, можно рассмотреть this%class, но это определение, над экземпляром какого ТБП происходит работа, а не из какого места меню она вызвана.

Не забывайте, что операция может быть вызвана из другой операции, в том числе с поднятием экранной формы, или через событие, и уже для этого случая место в иерархии меню абсолютно не определяется.

Можете попробовать определить операции с такими же короткими/длинными наименованиями для всех потомков, тогда они будут подменять друг друга.
Chekan
Участник со стажем


Вступление в Клуб: 29.11.2012
СообщениеВт Дек 04, 2012 08:21    Ответить с цитатой
Полезность: Нет оценки
Random пишет:


Если операция простая, можно рассмотреть this%class, но это определение, над экземпляром какого ТБП происходит работа, а не из какого места меню она вызвана.

Не забывайте, что операция может быть вызвана из другой операции, в том числе с поднятием экранной формы, или через событие, и уже для этого случая место в иерархии меню абсолютно не определяется.

Можете попробовать определить операции с такими же короткими/длинными наименованиями для всех потомков, тогда они будут подменять друг друга.

this конечно не подходит, ибо операция не простая и не над экземпляром вызывается) Вот не хотелось бы создавать операцию для каждого потомка, но придется видимо побороть лень Mad жаль что нету соответствующего функционала, многим бы время сэкономило -_-
В любом случае всем спасибо, что потратили на меня свое время
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Дек 04, 2012 08:23    Ответить с цитатой
Полезность: Нет оценки
Флажок "показывать дочерние типы" в представлении включен ?
Chekan
Участник со стажем


Вступление в Клуб: 29.11.2012
СообщениеВт Дек 04, 2012 08:28    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Флажок "показывать дочерние типы" в представлении включен ?

конечно)
Igorka
Профи


Вступление в Клуб: 28.09.2007
СообщениеВт Дек 04, 2012 08:29    Ответить с цитатой
Полезность: Нет оценки
Цитата:
но придется видимо побороть лень

зачем бороться со своей ленью, пусть пользователи борются. на экранную форму чекбоксы, как в остальных групповых операциях.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеВт Дек 04, 2012 09:04    Ответить с цитатой
Полезность: 1
Есть еще 1 самый простой вариант, сделать операцию обертку без поднятия формы, простую, которая будет через PLPCALL вызывать групповую операцию и передавать в нее класс из которого вызывается. На групповой операции убрать признак "Может быть активирована пользователем". В итоге дорабатывать самую малость и класс будет определяться корректно.
_________________
всегда есть как минимум 2 выхода
Chekan
Участник со стажем


Вступление в Клуб: 29.11.2012
СообщениеВт Дек 04, 2012 15:32    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:
Есть еще 1 самый простой вариант, сделать операцию обертку без поднятия формы, простую, которая будет через PLPCALL вызывать групповую операцию и передавать в нее класс из которого вызывается. На групповой операции убрать признак "Может быть активирована пользователем". В итоге дорабатывать самую малость и класс будет определяться корректно.

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

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