me.visible = false вместо закрытия формы - PullRequest
3 голосов
/ 02 ноября 2010

В моем приложении MS Access у меня есть несколько форм, которые очень интенсивно используют данные (несколько подчиненных форм, основанных на еще большем количестве таблиц). Мои пользователи жалуются, что при открытии данных по сети время загрузки невыносимо велико.

У меня есть настройка щелевого переднего / заднего конца с использованием отличного приложения autofe.

Единственное решение, которое я нашел, - вместо docmd.close, когда пользователь нажимает кнопку «Сохранить и закрыть» I me.visible = false. После этого пользователь в первый раз после загрузки приложения будет долго ждать, но при более поздней загрузке производительность улучшится на заметную величину.

Пока это работает довольно хорошо. Я просто обеспокоен тем, что в этой стратегии могут быть скрытые ошибки, с которыми я еще не сталкивался.

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

Кто-нибудь еще успешно использовал эту стратегию или знает вескую причину не делать этого?

Ответы [ 4 ]

4 голосов
/ 02 ноября 2010

Сначала, я думаю, просто спрятать форму не так уж и плохо.
Я хотел бы узнать немного больше о том, ПОЧЕМУ ваши времена загрузки такие длинные. Вы упомянули несколько подформ. Они все отображаются одновременно или на разных страницах элемента управления Tab?
В последнем случае вы можете довольно легко отменить привязку невидимых подчиненных форм и связать их с событием PageClick. Это сильно влияет на производительность.
EDIT:
Кроме того, немного выходит за рамки этого вопроса, но хорошо для каждой проблемы производительности:
-Вы дважды проверяли, что внешние ключи в связанных таблицах правильно проиндексированы?
- убедитесь, что серверная часть регулярно уплотняется.

4 голосов
/ 02 ноября 2010

Кто-нибудь еще успешно использовал эту стратегию или знает веские причины не делать этого?

Да, эта стратегия похожа на рецепт № 8.1 Ускорение времени загрузкиФормы из второго издания Access Cookbook .Однако этот рецепт предварительно загружает набор форм с WindowMode: = acHidden при запуске базы данных.Таким образом, компромисс в том, что запуск базы данных занимает больше времени, но последующие формы открываются (для предварительно загруженных форм) сравнительно быстро.

Обсуждение этого рецепта не упомянуло никаких недостатков для этой техники.При ограниченном использовании я не обнаружил ни одного.И так как это, кажется, улучшает опыт ваших пользователей, я бы продолжил использовать его.

Помимо этого, я бы внимательно рассмотрел объем данных, которые ваши формы извлекают из внутренней базы данных.Ограничьте количество строк, извлекаемых в качестве источников записей для основной и подчиненных форм.Дайте пользователю метод для выбора другой записи или небольшого набора записей.Также убедитесь, что вы используете индексирование для поддержки предложений Record Source WHERE и ORDER BY.Избегайте условий WHERE, в которых используются функции, которые заставят полностью сканировать таблицу, чтобы выяснить, какие строки следует исключить из источника записи.Аналогичные соображения применимы к полям со списком и списком, которые используют сохраненные запросы или операторы SELECT в качестве своих источников записи;если вы не можете ограничить строки, по крайней мере, убедитесь, что оптимизировали поиск данных.

1 голос
/ 02 ноября 2010

Да, я сам делал то же самое в очень сложных формах, в которых было около 10 или 15 вкладок с субформой.Работал не менее десяти лет.Вы должны были следить за различными значениями уровня формы или несвязанными элементами управления, которые, как вы предполагаете, начинаются с нуля или с нуля.Но как только он работает гладко, он должен работать просто отлично.Мы должны были вернуться в 97 дней, потому что Access мог аварийно завершить работу с ошибками нехватки памяти после того, как пользователи открывали и закрывали различные формы тысячи раз в день.

1 голос
/ 02 ноября 2010

Проверяете ли вы, что данные обновляются в надлежащие сроки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...