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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Не?
...
Рейтинг: 0 / 0
Порядок выполнения макроса autoexec и загружаемой формы
    #39211327
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нам заранее неизвестен порядок загрузки взаимозаменяемых объектов, то логичнее пользоваться одним. То, что зависимость объектов от порядка загрузки можно обойти, не заменяет общего надежного решения.
...
Рейтинг: 0 / 0
Порядок выполнения макроса autoexec и загружаемой формы
    #39211329
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world..., то логичнее пользоваться одним. ...
:)
http://hiprog.com/forum/read.php?id_forum=1&id_theme=11795&page=1
...
Рейтинг: 0 / 0
Порядок выполнения макроса autoexec и загружаемой формы
    #39211338
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Порядок выполнения макроса autoexec и загружаемой формы
    #39211344
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня один раз: (а2003)
...
Рейтинг: 0 / 0
Порядок выполнения макроса autoexec и загружаемой формы
    #39211351
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И, кстати говоря,
весь стартапный экшн по проверке должен быть описан в процедуре инициализации класса,
а не в функции CheckIt.
Задача функции CheckIt только в одном: дернуть инстанс класса,
потому как макросы не умеют дергать методы/свойства инстансов классов.
...
Рейтинг: 0 / 0
Порядок выполнения макроса autoexec и загружаемой формы
    #39211359
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PredeclaredЗадача функции CheckIt только в одном: дернуть инстанс класса,
Не-а... конкретный инстанс нигде не описан и не формируется. Обращение идёт к абстрактному шаблону.

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

Akina... Но жаль, что Вы смухлевали и поставили вывод в процедуре после обращения к методу класса... пропустили всё самое интересное.
Вот скрин по вашему листингу:
...
Рейтинг: 0 / 0
Порядок выполнения макроса autoexec и загружаемой формы
    #39211373
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared... А меня мембер 13 квартал ознакомил, заочно...
здесь: 13829891
...
Рейтинг: 0 / 0
Порядок выполнения макроса autoexec и загружаемой формы
    #39211375
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! по коду сперва должна выводиться единичка, а на самом деле наоборот... ни на какие мысли не наталкивает?
Тогда попробуйте вот такой код:
Код: 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
25 сообщений из 43, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Порядок выполнения макроса autoexec и загружаемой формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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