|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
Народ, доброго всем времени суток! Столкнулся с проблемой: дал возможность пользователю изменять себе пароль. До этой формы (для смены пароля) он добирается последовательно, открывая другие формы. В общем, когда он все же произвел манипуляции с паролем (старый/новый/новый), есть необходимость приложение закрыть, чтоб он зашел в него уже под новым паролем. Соответственно, после поздравления его через МСГбокс с успешной сменой пароля, делаю DoCmd.Quit. И вот тут начинается... Ошибка на ошибке, это не так, се не так... Короче, суть проблемы в том, что на момент DoCmd.Quit открыто порядка 5 форм. На события Form_Close некоторых из них написаны инструкции с использованием глобальных переменных. Все это дело начинает я так понимаю закрываться, и все эти Form_Close начинают срабатывать... Насколько я понял, DoCmd.Quit рушит в первую очередь те самые глобальные переменные? Мне просто это нужно как-то выяснить, чтобы обработать ошибки при пустых переменных... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 21:58 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
Wipeout2097В общем, когда он все же произвел манипуляции с паролем (старый/новый/новый), есть необходимость приложение закрыть, чтоб он зашел в него уже под новым паролем. Чаще всего разработчики после смены пароля просто выдают комментарий типа "Новый пароль вступит в силу после перезапуска приложения". Нет абсолютно никакого смысла сразу завершать приложение после смены пароля с точки зрения работающего пользователя... Еще один подход - давать изменить пароль сразу после правильной идентификации прямо в форме вода пароля, то есть в самом начале, там же можно и ребутнуть приложение без спроса и ущерба юзеру. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 23:03 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
А Вы допустите ситуацию-отошел пользователь, не выключая компьютер, на 3 минутки,а "доброжелатель" сменил ему пароль-фиг он войдет в базу при следующем запуске. Пароль должен меняться только владельцем пароля (то бишь обязательно подтвердив действующий-кстати везде так и делается) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 23:51 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
Wipeout2097..., есть необходимость приложение закрыть, чтоб он зашел в него уже под новым паролем... Нет такой необходимости. Ну поменял он пароль, у него от этого поменялись права? Нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 02:11 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
Wipeout2097на момент DoCmd.Quit открыто порядка 5 форм. На события Form_Close некоторых из них написаны инструкции с использованием глобальных переменных. Все это дело начинает я так понимаю закрываться, и все эти Form_Close начинают срабатывать... Насколько я понял, DoCmd.Quit рушит в первую очередь те самые глобальные переменные? Мне просто это нужно как-то выяснить, чтобы обработать ошибки при пустых переменных...DoCMD.Quit запускает кучу процессов завершения работы и освобождения ресурсов. Асинхронно. Понятно, что выгрузка объектов (форм) с выполнением пользовательского кода выполняется дольше, чем тупо очистка памяти. Это как при куче запущенных программ с несохранёнными данными выполнить Пуск-Завершение работы... Так что правильно - после MsgBox вручную корректно выгрузить все объекты, очистить все соотв. объектные переменные, и только потом (если выгрузка и очистка выполнены удачно) выполнять тот самый DoCMD.Quit. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 07:56 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
[quot vmagЕще один подход - давать изменить пароль сразу после правильной идентификации прямо в форме вода пароля, то есть в самом начале, там же можно и ребутнуть приложение без спроса и ущерба юзеру.[/quot] За, обеими руками! Это правильный подход. По крайней мере для базы Access. автор, делаю DoCmd.Quit. И вот тут начинается... Ошибка на ошибке, это не так, се не так... Короче, суть проблемы в том, что на момент DoCmd.Quit открыто порядка 5 форм. На события Form_Close некоторых из них написаны инструкции с использованием глобальных переменных. Все это дело начинает я так понимаю закрываться, и все эти Form_Close начинают срабатывать... Насколько я понял, DoCmd.Quit рушит в первую очередь те самые глобальные переменные? Мне просто это нужно как-то выяснить, чтобы обработать ошибки при пустых переменных... Неправильные действия. Сначала программно закрываешь открытые формы в порядке обратном порядку открытия. А затем уже закрываешь программу. У меня были любители закрывать программу крестиком в правом верхнем углу при куче открытых форм. Пришлось заблокировать крестик. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 08:56 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
Joss... У меня были любители закрывать программу крестиком в правом верхнем углу ... Это стандартный для приложений MS Office (и не только) экшн, соответствующий концепции User Friendly interface. И этого (де-факто стандарта) следует придерживаться в разработках приложений, а не гасить юзеров крестики. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 09:23 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
PredeclaredJoss... У меня были любители закрывать программу крестиком в правом верхнем углу ... Это стандартный для приложений MS Office (и не только) экшн, соответствующий концепции User Friendly interface. И этого (де-факто стандарта) следует придерживаться в разработках приложений, а не гасить юзеров крестики. :) А вот фиг им (пользователям) во всю ...[censored]... !!! Как я отловлю событие закрытия программы средствами Access? А потом ещё надо пройти по стеку вызванных форм, периодически спрашивая "Хотите ли Вы сохранить изменения?" Нет крестика - нет проблем!!! ИМНО! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 11:13 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
JossPredeclaredпропущено... Это стандартный для приложений MS Office (и не только) экшн, соответствующий концепции User Friendly interface. И этого (де-факто стандарта) следует придерживаться в разработках приложений, а не гасить юзеров крестики. :) А вот фиг им (пользователям) во всю ...[censored]... !!! Как я отловлю событие закрытия программы средствами Access? А потом ещё надо пройти по стеку вызванных форм, периодически спрашивая "Хотите ли Вы сохранить изменения?" Нет крестика - нет проблем!!! ИМНО! Дык и лави событие, а крестики-то зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 11:31 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
Необходимость в перезагрузке есть. Дело в том, что если пользователь продолжит работать с программой, он будет своими действиями инициировать ADODB подключения к файлам аксесса, защищенного этим же MDW, что и файл, в котором сидит пользователь. В строке подключения необходимо указывать имя пользователя и пароль. Обычно, я это делаю через WizHook.Key. Так вот, после смены пароля через DBEngine, новый пароль прописывается в MDW, а Wizhook в этом случае возвращает ещё старый. Соответственно, ADO провалится... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 12:33 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
ROIJossпропущено... А вот фиг им (пользователям) во всю ...[censored]... !!! Как я отловлю событие закрытия программы средствами Access? А потом ещё надо пройти по стеку вызванных форм, периодически спрашивая "Хотите ли Вы сохранить изменения?" Нет крестика - нет проблем!!! ИМНО! Дык и лави событие, а крестики-то зачем? Это не ко мне. Вопрос: как отследить закрытие базы "крестиком"? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 13:00 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
Для ТС. Жестко забить изменение пароля только при входе, с последующей перезагрузкой базы с новым паролем. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 13:05 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
JossROIпропущено... Дык и лави событие, а крестики-то зачем? Это не ко мне. Вопрос: как отследить закрытие базы "крестиком"? Создаешь скрытую форму у нее и ловишь событие закрытия. Я так делаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 13:35 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
Wipeout2097.. До этой формы (для смены пароля) он добирается последовательно, открывая другие формы. В общем, когда он все же произвел манипуляции с паролем (старый/новый/новый), есть необходимость приложение закрыть, чтоб он зашел в него уже под новым паролем. ...И вот тут начинается... .. Короче, суть проблемы в том, что на момент DoCmd.Quit открыто порядка 5 форм. ... Насколько я понял, DoCmd.Quit рушит в первую очередь те самые глобальные переменные? Мне просто это нужно как-то выяснить, чтобы обработать ошибки при пустых переменных... У меня в паре проектов пароль и логин при вводе записываются в глобальные переменные. А потом уже раздаются при открытии/закрытии форм, отчетов, итд итп. Вы при смене пользователем пароля просто присваивайте глобальным переменным новое значение, и все. При закрытии тех же самых форм (открытых на момент смены пароля), если есть подсос в событии к этим самым переменным, то просто пойдет ссылка на их новые значения. Аксесс сначала закрывает объекты внутри, а потом уже закрывается сам при выходе. Проверял) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 13:36 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
ROIJossпропущено... Это не ко мне. Вопрос: как отследить закрытие базы "крестиком"? Создаешь скрытую форму у нее и ловишь событие закрытия. Я так делаю. У меня бывает открыто цепочкой 5-6 форм. И что даст отслеживание закрытие скрытой формы? Поймать закрытие Access не цель. Цель - правильно в обратном порядке закрыть формы. А использование скрытой формы это не гарантирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 16:42 |
|
DoCmd.Quit первым делом обнуляет глобальные переменные что ли?
|
|||
---|---|---|---|
#18+
JossУ меня бывает открыто цепочкой 5-6 форм. И что даст отслеживание закрытие скрытой формы? Поймать закрытие Access не цель. Цель - правильно в обратном порядке закрыть формы. А использование скрытой формы это не гарантирует.Вот пример, формы закрываются в обратном порядке. Применён пример стека из книги Геца и Гилберта "Программирование на VB6 и VBA". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 17:58 |
|
|
start [/forum/topic.php?fid=45&msg=39607254&tid=1611653]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 464ms |
0 / 0 |