Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Можно ли в макросе отменить выполнение команды "ЗапускПрограммы"?  [new]
tim2
Member

Откуда:
Сообщений: 430
В макросе AutoExec выполняются последовательно несколько процедур, каждая вызывается своей командой. Можно ли сделать так, что если в процедуре2 возникает ошибка, то остальные команды в макросе не выполняются?
Или надо запускать только одну процедуру(первую), а все остальные вызывать уже из нее?
5 июл 05, 11:11    [1674993]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в макросе отменить выполнение команды "ЗапускПрограммы"?  [new]
Пользователь2
Guest
По-моему, если в процедуре2 будет ошибка, то при выполнении макроса, автоматически откроется окно vba с ошибкой.
5 июл 05, 11:27    [1675107]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в макросе отменить выполнение команды "ЗапускПрограммы"?  [new]
tim2
Member

Откуда:
Сообщений: 430
Речь идет не об ошибках в процедуре, а об "обрабатываемых" ошибках. Самый простой пример: нет подключения к файлу с таблицами. Программа ошибки не дает, она напоминает пользователю, что надо сделать Connect, но это все происходит в первой вызванной процедуре, а макрос вызывает следущую процедуру и т.д. Что ж в каждой из них обрабатывать те же ошибки, что и в первой?
5 июл 05, 12:19    [1675391]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в макросе отменить выполнение команды "ЗапускПрограммы"?  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Надо это делать не макросами, а через VB. А в AutoExec должна быть одна строчка: обращение к функции.
5 июл 05, 13:47    [1675984]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в макросе отменить выполнение команды "ЗапускПрограммы"?  [new]
макрос макросович
Guest
Или здесь не исключительное. В том смысле, что как ндравится тебе, так и делай.
Лучше одно или другое – для меня это в среднем без содержания.
Сам бы я делал имен так, как Саныч сказал. В частности потому, что макросами почти не пользуюсь по причине неумения. Все (почти), что можно сделать макросами, можно сделать МИФ-кодом.
Но верно и обратное – многое – почти все, из того, что может потребоваться в Access – проекте можно сделать макросами с небольшими добавлениями VBa-кода.
F1 поделилась со мной на сей счет следующим:
В столбце условий макроса Вы можете указать условие, при выполнение которого
Будет выполняться команда макроса .
Распорядиться этим знанием Вы можете в меру собственной творческой фантазии – формировать значения контролов в специальной управляющей форме и проверять их в качестве условий выполнения команд. Или формировать глобальные переменные и написать функции доступа к ним. Вот например один несколько экзотический, но вполне рабочий вариант:
Пусть каждая из последовательности ваших функций, составляющих напор команд макроса, возвращает тип вариант. Тогда Вы можете, используя специальную функцию CVErr возвращать информацию о номере интересующей Вас ошибки в виде значения специального функции. Проверять которое Вы можете последующим приведением полученного значения ошибки к числу или строке. Тогда безошибочное выполнение каждой предыдущей функции будет условием начала работы следующей.
На приложенной картинке условие могло выглядеть и так:
CLng(FuncErr())<>МоёНеЛюбимоеЧисло
где FuncErr() - первая выполняемая функция, а видимая внизу картинки - вторая, которая должна выполниться или нет в зависимости от ранее достигнутых результатов.

На этой же картинке проиллюстрировано - как отключить появление стандартного диалогового окна прерывания макроса (первая строка отключает, последняя включает),
Если нужно игнорировать «настоящие» ошибки возникающие в выполняемом коде.
(Саныч этого не одобрит, и будет прав, но сама по себе возможность достаточно уникальна. Но знать о ней лучше всего в последнюю очередь)

С наилучшими пожеланиями.

К сообщению приложен файл. Размер - 0Kb
5 июл 05, 15:15    [1676633]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить