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

%class в списочной операции на списке представлений

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


Вступление в Клуб: 06.11.2007
СообщениеСр Мар 18, 2009 08:30   %class в списочной операции на списке представлений Ответить с цитатой
Полезность: Нет оценки
Всем доброго дня!
Подскажите, можно ли както узнать для списочной операции, вызванной из списка представлений класс текущего типа?
German
Профи


Вступление в Клуб: 25.06.2007
СообщениеСр Мар 18, 2009 09:15    Ответить с цитатой
Полезность: Нет оценки
Можно подробнее? И не совсем понятно, почему списочная операция должна запускаться из списка представлений. Может быть, групповая?
_________________
Homo homini
lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеСр Мар 18, 2009 09:20    Ответить с цитатой
Полезность: Нет оценки
создается операция, которая может обрабатывать выделенные экземпляры а, если указан, файл со списком экземпляров для обработки. во втором случае допустим запуск на списке представлений типа, но для работы операции нужно знать над каким именно типом (классом) запущена операция
просто из интереса хотелось узнать, но если такой возможности нет, запускаться на списке представлений не будет
German
Профи


Вступление в Клуб: 25.06.2007
СообщениеСр Мар 18, 2009 09:24    Ответить с цитатой
Полезность: Нет оценки
Если я правильно понял, в файле могут быть экземпляры различных ТБП. Тогда что показывает для каждого экземпляра экземпляр%class ?
_________________
Homo homini
lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеСр Мар 18, 2009 09:26    Ответить с цитатой
Полезность: Нет оценки
не рассматриваем пока содержимое файла, класс нужен для работы элементов экранным форм (фильтраци представлений для выбора и т.п.)
German
Профи


Вступление в Клуб: 25.06.2007
СообщениеСр Мар 18, 2009 09:28    Ответить с цитатой
Полезность: Нет оценки
Тогда на основе чего операция должна догадаться о нужном классе? На основе представления, на котором находился курсор в момент запуска?
_________________
Homo homini
lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеСр Мар 18, 2009 09:31    Ответить с цитатой
Полезность: Нет оценки
вот и спрашиваю, можно как то в операции узнать класс из списка представлений которого вызвана (не над экземпляром), ведь список представлений уже построен для определенного класса
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеСр Мар 18, 2009 09:56    Ответить с цитатой
Полезность: Нет оценки
Еще возможен вариант, когда в списке - представляения от разных типов (родители-потомки).

Операция запускается руками из списка представлений...
То есть - операция конкретная. Она лежит в известном классе... Зачем его еще как-то узнавать?

Или я что-то не так понял?
lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеСр Мар 18, 2009 09:59    Ответить с цитатой
Полезность: Нет оценки
например операция лежит в кредитах, у которого есть известные потомки
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеСр Мар 18, 2009 10:32    Ответить с цитатой
Полезность: Нет оценки
тут уже прозвучала фраза... чем не устраивает конструкция например
Код:
this%class


ну а далее по накатанной делаем с экземпляром то, что необходимо для того или иного класса

например всеми любимый GET из типа ZALOG

Код:
if cred%class = 'OVERDRAFTS' then
   str   := 'Договору на открытие овердрафта № '||cred.[NUM_DOG]||' от '||to_char(cred.[DATE_BEGIN], 'DD.MM.YYYY');
else
   str   := 'кредитного договора № '||cred.[NUM_DOG]||' от '||to_char(cred.[DATE_BEGIN], 'DD.MM.YYYY');
end if;

_________________
всегда есть как минимум 2 выхода
lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеСр Мар 18, 2009 10:45    Ответить с цитатой
Полезность: Нет оценки
операция списочная и при запуске над списком представлений коллекция this пустая
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеСр Мар 18, 2009 11:09    Ответить с цитатой
Полезность: Нет оценки
Думается мне, что никак.

Может сделать операцию все-таки групповую и в нужных типах создать статические экземпляры.
Тогда у групповой при запуске this будет проинициализирована ссылкой на этот статэкзепляр. И к нему тогда this%class.

Или - создать в каждом нужном ТБП свою перекрывающую операцию. Тогда, в каком бы типе не находился юзер - запускает операцию с одним и тем же названием, но подтягивается операция из текущего ТБП.



Цитата:
MACRO

Прагма MACRO определяет имя макро-переменной. При обращении в тексте операции к этому имени (обращение к макро-переменной осуществляется с помощью префикса ‘&’) происходит подстановка заданного текста макроса вместо его имени. Если же макрос ранее не был определен, тогда остается текст без префикса '&'. В тексте операций можно использовать предопределенные макросы:

<...>
• &METHOD$CLASS -- короткое имя ТБП, которому принадлежит операция,
<...>



Последний раз редактировалось: lexus (Ср Мар 18, 2009 11:11), всего редактировалось 1 раз
lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеСр Мар 18, 2009 11:10    Ответить с цитатой
Полезность: Нет оценки
Понял вроде, что никак, так для расширения кругозора
mvg
Участник - экстремал


Вступление в Клуб: 04.12.2008
СообщениеЧт Сен 16, 2010 09:01    Ответить с цитатой
Полезность: Нет оценки
Код:

if this is not null then
   class_list := this%class;
else
   class_list := PLP$CLASS;
end if;
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеЧт Сен 16, 2010 22:49    Ответить с цитатой
Полезность: 1
Класс так же можно считать через клиент крипт
например:
Код:
Public Function Main(LastControl)
    Main = True 'Результат валидатора (True, False, NULL)   
    If LastControl Is Nothing Then
      vClass.Text = Form1.ClassId
      Form1.ScriptServerValidate Form1, "INIT_CLASS"
    ElseIf LastControl is PProject then
       
    End If
End Function

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

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