powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
16 сообщений из 16, страница 1 из 1
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607038
Фотография Wipeout2097
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, доброго всем времени суток! Столкнулся с проблемой: дал возможность пользователю изменять себе пароль. До этой формы (для смены пароля) он добирается последовательно, открывая другие формы. В общем, когда он все же произвел манипуляции с паролем (старый/новый/новый), есть необходимость приложение закрыть, чтоб он зашел в него уже под новым паролем. Соответственно, после поздравления его через МСГбокс с успешной сменой пароля, делаю DoCmd.Quit. И вот тут начинается...
Ошибка на ошибке, это не так, се не так... Короче, суть проблемы в том, что на момент DoCmd.Quit открыто порядка 5 форм. На события Form_Close некоторых из них написаны инструкции с использованием глобальных переменных. Все это дело начинает я так понимаю закрываться, и все эти Form_Close начинают срабатывать... Насколько я понял, DoCmd.Quit рушит в первую очередь те самые глобальные переменные? Мне просто это нужно как-то выяснить, чтобы обработать ошибки при пустых переменных...
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607051
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wipeout2097В общем, когда он все же произвел манипуляции с паролем (старый/новый/новый), есть необходимость приложение закрыть, чтоб он зашел в него уже под новым паролем.

Чаще всего разработчики после смены пароля просто выдают комментарий типа "Новый пароль вступит в силу после перезапуска приложения". Нет абсолютно никакого смысла сразу завершать приложение после смены пароля с точки зрения работающего пользователя...
Еще один подход - давать изменить пароль сразу после правильной идентификации прямо в форме вода пароля, то есть в самом начале, там же можно и ребутнуть приложение без спроса и ущерба юзеру.
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607056
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Вы допустите ситуацию-отошел пользователь, не выключая компьютер, на 3 минутки,а "доброжелатель" сменил ему пароль-фиг он войдет в базу при следующем запуске. Пароль должен меняться только владельцем пароля (то бишь обязательно подтвердив действующий-кстати везде так и делается)
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607065
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wipeout2097..., есть необходимость приложение закрыть, чтоб он зашел в него уже под новым паролем...
Нет такой необходимости.
Ну поменял он пароль, у него от этого поменялись права?
Нет.
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607087
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wipeout2097на момент DoCmd.Quit открыто порядка 5 форм. На события Form_Close некоторых из них написаны инструкции с использованием глобальных переменных. Все это дело начинает я так понимаю закрываться, и все эти Form_Close начинают срабатывать... Насколько я понял, DoCmd.Quit рушит в первую очередь те самые глобальные переменные? Мне просто это нужно как-то выяснить, чтобы обработать ошибки при пустых переменных...DoCMD.Quit запускает кучу процессов завершения работы и освобождения ресурсов. Асинхронно. Понятно, что выгрузка объектов (форм) с выполнением пользовательского кода выполняется дольше, чем тупо очистка памяти. Это как при куче запущенных программ с несохранёнными данными выполнить Пуск-Завершение работы...
Так что правильно - после MsgBox вручную корректно выгрузить все объекты, очистить все соотв. объектные переменные, и только потом (если выгрузка и очистка выполнены удачно) выполнять тот самый DoCMD.Quit.
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607110
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot vmagЕще один подход - давать изменить пароль сразу после правильной идентификации прямо в форме вода пароля, то есть в самом начале, там же можно и ребутнуть приложение без спроса и ущерба юзеру.[/quot] За, обеими руками! Это правильный подход. По крайней мере для базы Access.
автор, делаю DoCmd.Quit. И вот тут начинается...
Ошибка на ошибке, это не так, се не так... Короче, суть проблемы в том, что на момент DoCmd.Quit открыто порядка 5 форм. На события Form_Close некоторых из них написаны инструкции с использованием глобальных переменных. Все это дело начинает я так понимаю закрываться, и все эти Form_Close начинают срабатывать... Насколько я понял, DoCmd.Quit рушит в первую очередь те самые глобальные переменные? Мне просто это нужно как-то выяснить, чтобы обработать ошибки при пустых переменных...

Неправильные действия. Сначала программно закрываешь открытые формы в порядке обратном порядку открытия. А затем уже закрываешь программу.

У меня были любители закрывать программу крестиком в правом верхнем углу при куче открытых форм. Пришлось заблокировать крестик.
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607126
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss... У меня были любители закрывать программу крестиком в правом верхнем углу ...
Это стандартный для приложений MS Office (и не только) экшн, соответствующий концепции User Friendly interface.
И этого (де-факто стандарта) следует придерживаться в разработках приложений, а не гасить юзеров крестики.
:)
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607200
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PredeclaredJoss... У меня были любители закрывать программу крестиком в правом верхнем углу ...
Это стандартный для приложений MS Office (и не только) экшн, соответствующий концепции User Friendly interface.
И этого (де-факто стандарта) следует придерживаться в разработках приложений, а не гасить юзеров крестики.
:) А вот фиг им (пользователям) во всю ...[censored]... !!! Как я отловлю событие закрытия программы средствами Access? А потом ещё надо пройти по стеку вызванных форм, периодически спрашивая "Хотите ли Вы сохранить изменения?" Нет крестика - нет проблем!!! ИМНО!
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607214
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossPredeclaredпропущено...

Это стандартный для приложений MS Office (и не только) экшн, соответствующий концепции User Friendly interface.
И этого (де-факто стандарта) следует придерживаться в разработках приложений, а не гасить юзеров крестики.
:) А вот фиг им (пользователям) во всю ...[censored]... !!! Как я отловлю событие закрытия программы средствами Access? А потом ещё надо пройти по стеку вызванных форм, периодически спрашивая "Хотите ли Вы сохранить изменения?" Нет крестика - нет проблем!!! ИМНО!
Дык и лави событие, а крестики-то зачем?
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607254
Фотография Wipeout2097
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимость в перезагрузке есть. Дело в том, что если пользователь продолжит работать с программой, он будет своими действиями инициировать ADODB подключения к файлам аксесса, защищенного этим же MDW, что и файл, в котором сидит пользователь. В строке подключения необходимо указывать имя пользователя и пароль. Обычно, я это делаю через WizHook.Key. Так вот, после смены пароля через DBEngine, новый пароль прописывается в MDW, а Wizhook в этом случае возвращает ещё старый. Соответственно, ADO провалится...
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607269
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIJossпропущено...
А вот фиг им (пользователям) во всю ...[censored]... !!! Как я отловлю событие закрытия программы средствами Access? А потом ещё надо пройти по стеку вызванных форм, периодически спрашивая "Хотите ли Вы сохранить изменения?" Нет крестика - нет проблем!!! ИМНО!
Дык и лави событие, а крестики-то зачем? Это не ко мне. Вопрос: как отследить закрытие базы "крестиком"?
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607274
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для ТС. Жестко забить изменение пароля только при входе, с последующей перезагрузкой базы с новым паролем.
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607290
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossROIпропущено...

Дык и лави событие, а крестики-то зачем? Это не ко мне. Вопрос: как отследить закрытие базы "крестиком"?
Создаешь скрытую форму у нее и ловишь событие закрытия.
Я так делаю.
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607294
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wipeout2097.. До этой формы (для смены пароля) он добирается последовательно, открывая другие формы. В общем, когда он все же произвел манипуляции с паролем (старый/новый/новый), есть необходимость приложение закрыть, чтоб он зашел в него уже под новым паролем.

...И вот тут начинается...

.. Короче, суть проблемы в том, что на момент DoCmd.Quit открыто порядка 5 форм.

... Насколько я понял, DoCmd.Quit рушит в первую очередь те самые глобальные переменные? Мне просто это нужно как-то выяснить, чтобы обработать ошибки при пустых переменных...

У меня в паре проектов пароль и логин при вводе записываются в глобальные переменные. А потом уже раздаются при открытии/закрытии форм, отчетов, итд итп.

Вы при смене пользователем пароля просто присваивайте глобальным переменным новое значение, и все. При закрытии тех же самых форм (открытых на момент смены пароля), если есть подсос в событии к этим самым переменным, то просто пойдет ссылка на их новые значения.

Аксесс сначала закрывает объекты внутри, а потом уже закрывается сам при выходе. Проверял)
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607382
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIJossпропущено...
Это не ко мне. Вопрос: как отследить закрытие базы "крестиком"?
Создаешь скрытую форму у нее и ловишь событие закрытия.
Я так делаю. У меня бывает открыто цепочкой 5-6 форм. И что даст отслеживание закрытие скрытой формы? Поймать закрытие Access не цель. Цель - правильно в обратном порядке закрыть формы. А использование скрытой формы это не гарантирует.
...
Рейтинг: 0 / 0
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
    #39607434
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossУ меня бывает открыто цепочкой 5-6 форм. И что даст отслеживание закрытие скрытой формы? Поймать закрытие Access не цель. Цель - правильно в обратном порядке закрыть формы. А использование скрытой формы это не гарантирует.Вот пример, формы закрываются в обратном порядке. Применён пример стека из книги Геца и Гилберта "Программирование на VB6 и VBA".
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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