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

Как прервать(завершить) клиент-скрипт досрочно

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


Вступление в Клуб: 23.09.2010
СообщениеПн Окт 07, 2013 09:23   Как прервать(завершить) клиент-скрипт досрочно Ответить с цитатой
Полезность: Нет оценки
Есть дистрибутивная операция добавить,
у неё к-с:
Код:

Public Function Main(LastControl)
   Execute V_EXEC.TEXT
   Main = true
End Function


Есть расширение операции
хотим при определённых условиях прерывать OK,
(pragma error мне не подходит)

соответственно в расширении пишу
Код:

[CSMD].Command(V_EXEC,'Main = Null');   
[CSMD].Command(V_EXEC,'LastControl.SetFocus ');                                                           
[CSMD].Command(V_EXEC,'V_EXEC.Text = ""');                         
[CSMD].Command(V_EXEC,'End Function');   

Идея в том чтобы завершить функцию Main до того как она дойдёт до
Main = true
ругается на End Function или Exit Function - "Предполагается наличие инструкции"
собственно вопрос какую команду VB пользовать,
чтобы досрочно завершить функцию Main ?[/code]


Последний раз редактировалось: Alkov (Вт Окт 08, 2013 02:25), всего редактировалось 1 раз
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПн Окт 07, 2013 10:25   Re: Как прервать(завершить) клиент-скрипт досрочно Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
Есть дистрибутивная операция добавить,
у неё к-с:
Public Function Main(LastControl)
Execute V_EXEC.TEXT
Main = true
End Function

Есть расширение операции
хотим при определённых условиях прерывать OK,
(pragma error мне не подходит)

соответственно в расширении пишу
[CSMD].Command(V_EXEC,'Main = Null');
[CSMD].Command(V_EXEC,'LastControl.SetFocus ');
[CSMD].Command(V_EXEC,'V_EXEC.Text = ""');
[CSMD].Command(V_EXEC,'End Function');

Идея в том чтобы завершить функцию Main до того как она дойдёт до
Main = true
ругается на End Function или Exit Function - "Предполагается наличие инструкции"
собственно вопрос какую команду VB пользовать,
чтобы досрочно завершить функцию Main ?

А если поменять местами команды?
Код:
[CSMD].Command(V_EXEC,'V_EXEC.Text = ""');   
[CSMD].Command(V_EXEC,'Main = Null');   
[CSMD].Command(V_EXEC,'LastControl.SetFocus ');   
[CSMD].Command(V_EXEC,'End Function');

_________________
всегда есть как минимум 2 выхода
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПн Окт 07, 2013 10:28    Ответить с цитатой
Полезность: Нет оценки
на закладке "Клиент-скрипт" exit function выполнился без ругательств.
Возможно, у Вас проблема в том, что

Execute V_EXEC.TEXT
и
[CSMD].Command(V_EXEC,'V_EXEC.Text = ""');

Можно например, как в отчотах, использовать вторую переменную V_DATA и писать туда "команду", а уже в клиент - скрипте, анализировать типа
if V_DATA = 'exit function' then exit function
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеПн Окт 07, 2013 10:52    Ответить с цитатой
Полезность: Нет оценки
вообще убрал [CSMD].Command(V_EXEC,'V_EXEC.Text = ""');

На Exit Function ругается - "Недопустимая операция exit" - Добавлял просто в к-с
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПн Окт 07, 2013 10:58    Ответить с цитатой
Полезность: Нет оценки
весь код полностью можете привести ?
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеПн Окт 07, 2013 11:01    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
весь код полностью можете привести ?

Завтра с нуля операцию сделаю - выложу. А то сёдня уже рабдень кончился Wink
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеПн Окт 07, 2013 14:22    Ответить с цитатой
Полезность: 1
Exit Function не работает, т.к. выполняя динамически код вы находитесь в анонимном блоке.

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

      [CSMD].Command(V_DEST,'sub test_sub');
      [CSMD].Command(V_DEST,'msgbox "123"');
      [CSMD].Command(V_DEST,'Exit sub');
      [CSMD].Command(V_DEST,'msgbox "456"');
      [CSMD].Command(V_DEST,'end sub');
      [CSMD].Command(V_DEST,'test_sub');
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеВт Окт 08, 2013 02:19    Ответить с цитатой
Полезность: Нет оценки
maestro пишет:
Exit Function не работает, т.к. выполняя динамически код вы находитесь в анонимном блоке.
[/code]


Код:

[CSMD].Command(V_DEST,'Main = Null');                                                                                    
[CSMD].Command(V_DEST,'sub test_sub');                   
[CSMD].Command(V_DEST,'Exit Sub');      
[CSMD].Command(V_DEST,'end sub');                
[CSMD].Command(V_DEST,'test_sub');



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

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