Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Порядок выполнения макроса autoexec и загружаемой формы / 25 сообщений из 43, страница 1 из 2
08.04.2016, 12:46
    #39210978
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
Я считал что при загрузке базы сначала выполняется макрос autoexec, а потом грузится форма, указанная в параметрах загрузки базы. И вот столкнулся с такой вещью. У меня в autoexec вызываются несколько функций, а те в свою очередь вызывают другие функции. И получается, что autoexec ещё не отработал, а форма уже загрузилась.

У меня должны в autoexec выполниться следующие проверки
- наличие пути к удалённой базе
- наличие самой удалённой базы
- отсутствие подключенных пользователей к удалённой базе.

В случаи невыполнения очередной проверки выводится MsgBox с сообщением об этом и работа оканчивается.
Но у меня выводится загружаемая форма, а поверх её висит этот MsgBox с сообщением об ошибке. Странно это.

-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
...
Рейтинг: 0 / 0
08.04.2016, 13:02
    #39210999
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
А зачем вы это совмещаете? Проверяйте что нужно в автоэкзеке и оттуда же запускайте форму. Автоэкзек и форма грузятся параллельно
...
Рейтинг: 0 / 0
08.04.2016, 13:12
    #39211012
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
MrShinА зачем вы это совмещаете? Проверяйте что нужно в автоэкзеке и оттуда же запускайте форму. Автоэкзек и форма грузятся параллельно Такое у нас требование к программе. Её потом включают в систему и запускают при помощи своеобразного диспетчера программ.
...
Рейтинг: 0 / 0
08.04.2016, 13:56
    #39211059
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
JossТакое у нас требование к программе
Очень необычное требование. А можно попдробнее, почему возникло такое требование? Пока не понимаю, где это может потребоваться.
...
Рейтинг: 0 / 0
08.04.2016, 14:16
    #39211082
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
Joss- наличие пути к удалённой базе
- наличие самой удалённой базы
- отсутствие подключенных пользователей к удалённой базе.

проверять в самой форме при открытии, autoexec убрать вообще...
...
Рейтинг: 0 / 0
08.04.2016, 14:43
    #39211125
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
У меня все проверки санкционированности доступа и
переопределение связей в стартовой форме.

AutoExec-ом никогда не пользовалась.
...
Рейтинг: 0 / 0
08.04.2016, 14:44
    #39211128
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
Объект автозагрузки должен быть один. Только так можно гарантировать порядок загрузки/выполнения компонентов алгоритма. Так что или форму грузить из макроса, или действия макроса выполнять при загрузке формы из её модуля. Поскольку логически сначала выполняются проверки, потом грузится форма - попытка выполнения проверок из кода модуля формы не соответствует требуемой логике в полном объёме.
Вывод: воспользуйтесь советом MrShin .

JossТакое у нас требование к программе. Её потом включают в систему и запускают при помощи своеобразного диспетчера программ.
Это требование (по тексту - совершенно идиотское) никак не интерферирует с предлагаемой реализацией.
...
Рейтинг: 0 / 0
08.04.2016, 15:20
    #39211174
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
AkinaОбъект автозагрузки должен быть один. Только так можно гарантировать порядок загрузки/выполнения компонентов алгоритма. Так что или форму грузить из макроса, или действия макроса выполнять при загрузке формы из её модуля. ...
Во вложении пример и с формой, и с макросом,
не согласный с этим утверждением.
:)
...
Рейтинг: 0 / 0
08.04.2016, 15:21
    #39211176
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
Predeclaredне согласный с этим утверждением.Каким именно?
...
Рейтинг: 0 / 0
08.04.2016, 15:25
    #39211182
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
AkinaКаким именно?
Так я же процитировал.
...
Рейтинг: 0 / 0
08.04.2016, 15:29
    #39211188
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
Predeclared , там не одно утверждение. Причём базовым является утверждение
AkinaТолько так можно гарантировать порядок загрузки/выполнения компонентов алгоритма.
а всё остальное - следствия.

Вы оспариваете именно базовое утверждение?
...
Рейтинг: 0 / 0
08.04.2016, 15:43
    #39211208
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
К чему относится кусок "базового утверждения":
AkinaТолько так ...
Утверждения с такими вставками на роль базового не подходят.
Не?

AkinaВы оспариваете именно базовое утверждение?
Нет.
Целиком процитированное.
...
Рейтинг: 0 / 0
08.04.2016, 16:57
    #39211283
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
PredeclaredУтверждения с такими вставками на роль базового не подходят.
В среде MS Access выполнение автоматической загрузки макроса Autoexec и стартовой формы выполняется параллельно и асинхронно. Механизм какого-либо управления порядком выполнения безотносительно к содержимому указанных процедур - отсутствует.
Следовательно, из трёх вариантов (только макрос, только форма, макрос и форма) только первые два варианта способны обеспечить гарантированный порядок выполнения процедур (при отсутствии в тексте вызовов асинхронных процедур, понятно). Соответственно, в данном конкретном случае слова "только так" легитимны и оправданы.
...
Рейтинг: 0 / 0
08.04.2016, 17:26
    #39211307
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
Akina... В среде MS Access выполнение автоматической загрузки макроса Autoexec и стартовой формы выполняется параллельно и асинхронно. Механизм какого-либо управления порядком выполнения безотносительно к содержимому указанных процедур - отсутствует. Следовательно, из трёх вариантов (только макрос, только форма, макрос и форма) только первые два варианта способны обеспечить гарантированный порядок выполнения процедур (при отсутствии в тексте вызовов асинхронных процедур, понятно).

Вот это должно было быть на месте вставки "Только так",
тогда фраза, безусловно годилась бы на роль "Базового утверждения".

Считаем, что там оно так и было.
Будем от этого и отталкиваться.

Однако, приложенный пример доступно показывает несостоятельность второй части этого "Базового" утверждения, и, как следствие, остальных двух утверждений, ибо:

1. >>Объект автозагрузки должен быть один
В примере их оба два.

2. >>только первые два варианта способны обеспечить гарантированный порядок выполнения процедур
В примере выбран третий вариант и он 100% обеспечивает "гарантированный порядок выполнения процедур".

3. >>Так что или форму грузить из макроса, или действия макроса выполнять при загрузке формы из её модуля. ...
В примере нет ни первого, ни второго варианта. Каждый сам по себе.

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

Не?
...
Рейтинг: 0 / 0
08.04.2016, 17:39
    #39211327
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
Если нам заранее неизвестен порядок загрузки взаимозаменяемых объектов, то логичнее пользоваться одним. То, что зависимость объектов от порядка загрузки можно обойти, не заменяет общего надежного решения.
...
Рейтинг: 0 / 0
08.04.2016, 17:41
    #39211329
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
mds_world..., то логичнее пользоваться одним. ...
:)
http://hiprog.com/forum/read.php?id_forum=1&id_theme=11795&page=1
...
Рейтинг: 0 / 0
08.04.2016, 17:44
    #39211338
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
PredeclaredВ примере выбран третий вариант и он 100% обеспечивает "гарантированный порядок выполнения процедур".
Да ни хрена. В примере вызов функции выполняется дважды - и при загрузке формы, и при выполнении макроса autoexec.

Измените функцию на
Код: vbnet
1.
2.
3.
4.
5.
6.
Public Function CheckIt() As Boolean
Static cnt As Integer
    cnt = cnt + 1
    Debug.Print cnt
    CheckIt = Project.CheckCompleted()
End Function


Очень любопытный итог в Immediate Window...
...
Рейтинг: 0 / 0
08.04.2016, 17:49
    #39211344
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
У меня один раз: (а2003)
...
Рейтинг: 0 / 0
08.04.2016, 17:53
    #39211351
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
И, кстати говоря,
весь стартапный экшн по проверке должен быть описан в процедуре инициализации класса,
а не в функции CheckIt.
Задача функции CheckIt только в одном: дернуть инстанс класса,
потому как макросы не умеют дергать методы/свойства инстансов классов.
...
Рейтинг: 0 / 0
08.04.2016, 18:05
    #39211359
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
PredeclaredЗадача функции CheckIt только в одном: дернуть инстанс класса,
Не-а... конкретный инстанс нигде не описан и не формируется. Обращение идёт к абстрактному шаблону.

PredeclaredУ меня один раз: (а2003)
Один раз и должно - по озвученной выше причине.
Но жаль, что Вы смухлевали и поставили вывод в процедуре после обращения к методу класса... пропустили всё самое интересное.
...
Рейтинг: 0 / 0
08.04.2016, 18:06
    #39211361
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
Поправка:
Predeclared... весь стартапный экшн по проверке должен быть описан вызываться в процедуре инициализации класса...
Описан то он может быть и в других местах.
...
Рейтинг: 0 / 0
08.04.2016, 18:08
    #39211364
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
Да, кстати... а потом определите (Dim) в функции экземпляр класса Project, и вызовите метод этого экземпляра.
...
Рейтинг: 0 / 0
08.04.2016, 18:12
    #39211370
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
Akina... Не-а... конкретный инстанс нигде не описан и не формируется. Обращение идёт к абстрактному шаблону.
Вы не знакомы с Attribute VB_PredeclaredId?
:)
А меня мембер 13 квартал ознакомил, заочно.

Akina... Но жаль, что Вы смухлевали и поставили вывод в процедуре после обращения к методу класса... пропустили всё самое интересное.
Вот скрин по вашему листингу:
...
Рейтинг: 0 / 0
08.04.2016, 18:17
    #39211373
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
Predeclared... А меня мембер 13 квартал ознакомил, заочно...
здесь: 13829891
...
Рейтинг: 0 / 0
08.04.2016, 18:18
    #39211375
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения макроса autoexec и загружаемой формы
О! по коду сперва должна выводиться единичка, а на самом деле наоборот... ни на какие мысли не наталкивает?
Тогда попробуйте вот такой код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Public Function CheckIt() As Boolean
Dim prj As New Project
Static cnt As Integer
    cnt = cnt + 1
    Debug.Print cnt
    CheckIt = prj.CheckCompleted()
End Function


Сколько таки раз выполняется вызов?
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Порядок выполнения макроса autoexec и загружаемой формы / 25 сообщений из 43, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]