Как прервать(завершить) клиент-скрипт досрочно
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 пишет: | весь код полностью можете привести ? |
Завтра с нуля операцию сделаю - выложу. А то сёдня уже рабдень кончился  |
|
 |
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
Спасибо буду знать . |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|