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

Можно определить из какого представления запущена опер-ия ?
На страницу 1, 2  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеВт Ноя 05, 2013 09:15   Можно определить из какого представления запущена опер-ия ? Ответить с цитатой
Полезность: Нет оценки
Здравствуйте!

Можно ли в операции, определить из какого представления
запущена операция ?
(хотя наверное это только навигатор знает а не бд)
, ну или хотя бы какое представление выполнялось пользователем перед запуском операции , курсор же остаётся открытым?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Ноя 05, 2013 12:53    Ответить с цитатой
Полезность: Нет оценки
Мне известен только такой кривой способ - в операции фильтре представления взводить глобальную переменную неким флагом (например 1 представление флаг = 1, 2 - 2 и т.п.), в операции смотреть что за флаг.

Или тем же методом, вместо флага устанавливать признак в контексте пользователя.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Ноя 05, 2013 14:17    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Мне известен только такой кривой способ - в операции фильтре представления взводить глобальную переменную неким флагом (например 1 представление флаг = 1, 2 - 2 и т.п.), в операции смотреть что за флаг.

Или тем же методом, вместо флага устанавливать признак в контексте пользователя.


Угу. Очень кривой.
Заходим в одно представление, заходим во второе представление, меню Окно->первое представление, запускаем операцию. Операция думает, что запустили из второго представления, а на самом деле из первого.

Оно, конечно, вероятность такого невелика, но тем не менее ненулевая.

А можно, кстати, сделать идентичные операции, одну разрешить выполнять из одного представления, вторую - из второго, обе пусть вызывают третью с определённым параметром Smile

А цель какова? Зачем такие приседания, может, можно проще решить?


Последний раз редактировалось: Random (Вт Ноя 05, 2013 14:33), всего редактировалось 1 раз
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеВт Ноя 05, 2013 14:32    Ответить с цитатой
Полезность: Нет оценки
В чем скрытый смысл знать из какой вьюхи запущена операция? Учитывая, что пользователь может работать из одной вьюхи, какого-нибудь полного списка.
_________________
всегда есть как минимум 2 выхода
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеСр Ноя 06, 2013 02:56    Ответить с цитатой
Полезность: Нет оценки
Цитата:
А можно, кстати, сделать идентичные операции, одну разрешить выполнять из одного представления, вторую - из второго, обе пусть вызывают третью с определённым параметром

Использовал этот вариант.
У разных групп пользователей разный список доступных представлениий,
Соответственно хотели чтобы операция по разному отрабатывала для каждой группы. Разные операции нехотели т.к. отличие работы операций небольшое.
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеСр Ноя 06, 2013 06:20    Ответить с цитатой
Полезность: 1
Alkov пишет:
Цитата:
А можно, кстати, сделать идентичные операции, одну разрешить выполнять из одного представления, вторую - из второго, обе пусть вызывают третью с определённым параметром

Использовал этот вариант.
У разных групп пользователей разный список доступных представлениий,
Соответственно хотели чтобы операция по разному отрабатывала для каждой группы. Разные операции нехотели т.к. отличие работы операций небольшое.


Зачем знать текущее представление для этого?
Надо в операции анализировать вхождение пользователя в группу доступа ну или доступное ему представление.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеПт Сен 26, 2014 03:54    Ответить с цитатой
Полезность: Нет оценки
Вопрос тот же что и в топе ,но задача немного другая.

В Типе есть представление где отображены экземпляры, при это выполнены определённые проверки.
И есть операция которая выполняет аналогичные проверки перед запуском.
Операция может запускаться с любого представления типа.
Хотелось бы если запуск операции производится из "нашего" представления, то не выполнять повторно те же самые проверки...

Контекст по вышеописанному не подходит , т.к. не знаю как сделать изменение контекста при покидании/переключении из нашего представления в другое и обратно.

Вариант
Цитата:
А можно, кстати, сделать идентичные операции, одну разрешить выполнять из одного представления, вторую - из второго, обе пусть вызывают третью с определённым параметром

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


Смотрел также представление
Системный журнал\Список пользовательских сессий
столбец Действие и Операция.
Но они на переключение представлений не реагируют- только на запуск...
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеПт Сен 26, 2014 06:30    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:

Контекст по вышеописанному не подходит , т.к. не знаю как сделать изменение контекста при покидании/переключении из нашего представления в другое и обратно.

На представление повесить операцию-фильтр, где взводить контекст или переменные.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеПт Сен 26, 2014 06:51    Ответить с цитатой
Полезность: Нет оценки
А ещё, представляете вообще! операции можно вызвать - не входя ни в какие представления - с помощью синтаксиса PLPCALL из другой операции, например!

Поэтому никто и не заморачивается. Я имею в виду разработчиков АРМов.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеПт Сен 26, 2014 09:08    Ответить с цитатой
Полезность: Нет оценки
devor пишет:
Alkov пишет:

Контекст по вышеописанному не подходит , т.к. не знаю как сделать изменение контекста при покидании/переключении из нашего представления в другое и обратно.

На представление повесить операцию-фильтр, где взводить контекст или переменные.

Взводить то понятно где, не понятно как сбросить при переключении в другое...
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеПт Сен 26, 2014 11:17    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
devor пишет:
Alkov пишет:

Контекст по вышеописанному не подходит , т.к. не знаю как сделать изменение контекста при покидании/переключении из нашего представления в другое и обратно.

На представление повесить операцию-фильтр, где взводить контекст или переменные.

Взводить то понятно где, не понятно как сбросить при переключении в другое...

Каждое представление может переопределять контекст.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеПн Сен 29, 2014 07:23    Ответить с цитатой
Полезность: Нет оценки
devor пишет:
Alkov пишет:
devor пишет:
Alkov пишет:

Контекст по вышеописанному не подходит , т.к. не знаю как сделать изменение контекста при покидании/переключении из нашего представления в другое и обратно.

На представление повесить операцию-фильтр, где взводить контекст или переменные.

Взводить то понятно где, не понятно как сбросить при переключении в другое...

Каждое представление может переопределять контекст.


При переключении между уже открытыми представлениями такого не будет, т.к. представление при таком переключении заново не переоткрывается.
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеВт Сен 30, 2014 07:07    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
devor пишет:
Alkov пишет:
devor пишет:
Alkov пишет:

Контекст по вышеописанному не подходит , т.к. не знаю как сделать изменение контекста при покидании/переключении из нашего представления в другое и обратно.

На представление повесить операцию-фильтр, где взводить контекст или переменные.

Взводить то понятно где, не понятно как сбросить при переключении в другое...

Каждое представление может переопределять контекст.


При переключении между уже открытыми представлениями такого не будет, т.к. представление при таком переключении заново не переоткрывается.

Значит разные представления должны свой контекст заполнять. И тогда операция будет знать, какие представления (проверки) уже выполнены.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеВт Сен 30, 2014 08:10    Ответить с цитатой
Полезность: Нет оценки
devor пишет:
Alkov пишет:
devor пишет:
Alkov пишет:
devor пишет:
Alkov пишет:

Контекст по вышеописанному не подходит , т.к. не знаю как сделать изменение контекста при покидании/переключении из нашего представления в другое и обратно.

На представление повесить операцию-фильтр, где взводить контекст или переменные.

Взводить то понятно где, не понятно как сбросить при переключении в другое...

Каждое представление может переопределять контекст.


При переключении между уже открытыми представлениями такого не будет, т.к. представление при таком переключении заново не переоткрывается.

Значит разные представления должны свой контекст заполнять. И тогда операция будет знать, какие представления (проверки) уже выполнены.


Это ничего не даст, операция узнает какие представления открыты , но не из какого она запущена.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Сен 30, 2014 09:36    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
...
Это ничего не даст, операция узнает какие представления открыты , но не из какого она запущена.


А если снабдить разные представления разными идентификаторами?
например, одно - чётными, другое - нечётными.

select id*2+1 :id
...
и
select id*2+1 :id
..

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

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