Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Rikozenit
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 97
1

Замедление работы скриптов VBA в Access

20.02.2019, 12:35. Просмотров 692. Ответов 20

Доброго дня!
Заметил в работе своей базы MS Access следующую проблему: чем дольше открыта база, тем медленнее начинают отрабатывать скрипты VBA (заметно даже на глаз, но для верности замерял по таймеру). Помогает только закрыть базу и открыть её снова. Но хватает этого минут на 5-15. Затем опять всё замедляется. Одна и та же операция на "свежезагруженную" базу выполняется 10 секунд, а если база "постояла" открытой какое-то время (даже без работы в ней) - то время отработки кода растёт до 40 сек - 2 минут, а то и больше.

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

Дано:
Разделённая база данных.
Файл с таблицами (270мб) хранится на сервере.
Интерфейсный файл (с запросами, формами, отчётами, макросами и модулями) (180мб) также хранится на сервере.
Все пользователи заходят в базу через интерфейсный файл: от 10 до 25 пользователей в день.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2019, 12:35
Ответы с готовыми решениями:

Разница в скорости vba word и vba access
Вопрос: из акса идет выгрузка данных в файл ворд, далее эти данные опять же из акса форматно...

Код VBA в Access 2010 работает, в Access 2007 выдает ошибку
Написала код VBA в Access 2010 - работает, в Access-2007 выдает ошибку. В чем причина - подскажите

Сжать файлы бд access из windows при помощи скриптов
Можно ли сжать файлы access при помощи wsh или wmi?

Скорость работы соедиенения VBA и MS ACCESS
Всем добрый день! Есть код, который обращается из-под VBA к БД ACCESS и считывает оттуда данные....

Пример работы с базой данных MS Access средствами VBA MS Excel
Выкладываю свой пример работы с базой данных MS Access (так и с любой базой данных, меняется только...

20
ltv_1953
Эксперт MS Access
13302 / 6011 / 1201
Регистрация: 21.06.2012
Сообщений: 10,856
20.02.2019, 12:46 2
Цитата Сообщение от Rikozenit Посмотреть сообщение
Интерфейсный файл (с запросами, формами, отчётами, макросами и модулями) (180мб) также хранится на сервере.
Он должен быть у каждого свой (в личной папке пользователя на сервере) и работать с базой на сервере пользователи должны с по RDP - тогда подобных проблем не будет. Ну и данные нужно сжимать и делать копию раз в день.
0
Rikozenit
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 97
20.02.2019, 13:17  [ТС] 3
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Он должен быть у каждого свой (в личной папке пользователя на сервере) и работать с базой на сервере пользователи должны с по RDP - тогда подобных проблем не будет. Ну и данные нужно сжимать и делать копию раз в день.
Наличие собственного файла у пользователя не влияет на замедление работы (проверял). У меня свой файл лежит даже не на сервере, а у меня на ПК - та же картина.
Данные сжимаю, копии делаю - не помогает(
0
MrShin
254 / 222 / 57
Регистрация: 18.06.2015
Сообщений: 474
20.02.2019, 14:03 4
Проверьте ипользуемую память приложения. Если растет, значит где-то криво написан код, не закрываются рекордсеты или что-то подобное, тут довольо большое поле для исследования.
Ну и попробуйте отключать какие-то модули, если возможно - чтобы сузить область поиска.
0
20.02.2019, 14:03
alvk
Эксперт MS Access
5799 / 3684 / 201
Регистрация: 12.08.2011
Сообщений: 9,701
21.02.2019, 02:10 5
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Он должен быть у каждого свой (в личной папке пользователя на сервере) и работать с базой на сервере пользователи должны с по RDP
может или?
Цитата Сообщение от Rikozenit Посмотреть сообщение
Наличие собственного файла у пользователя не влияет на замедление работы (проверял)
-decompile делали ?
0
Rikozenit
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 97
21.02.2019, 09:05  [ТС] 6
Цитата Сообщение от alvk Посмотреть сообщение
-decompile делали ?
Не делал. Читал, что его только в крайнем случае стоит делать.. Пробовал ещё делать импорт всей интерфейсной части в новый пустой файл, но почему-то при этом сбивались некоторые наименования в запросах и ещё какие-то траблы вылезали.
Может нужно было сначала сделать единый файл из базовой и интерфейсной части, потом всё это импортнуть, а затем вновь сделать разделение?..
0
alvk
Эксперт MS Access
5799 / 3684 / 201
Регистрация: 12.08.2011
Сообщений: 9,701
21.02.2019, 09:09 7
Цитата Сообщение от Rikozenit Посмотреть сообщение
Читал, что его только в крайнем случае стоит делать..
Это ещё с какого перепугу? Сделайте. Потом отпишитесь.

p.s. а сжатие вообще раз в год можно делать, а БД открывать раз в два дня
0
Rikozenit
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 97
21.02.2019, 13:20  [ТС] 8
Цитата Сообщение от alvk Посмотреть сообщение
Сделайте decompile. Потом отпишитесь.
Сделал декомпиляцию - не помогло.
Затем применил модуль для очистки проектов ACCESS от мусора ClearModules (взял отсюда http://hiprog.com/index.php?option=com_content&task=view&id=251661584) - не помогло((
0
alvk
Эксперт MS Access
5799 / 3684 / 201
Регистрация: 12.08.2011
Сообщений: 9,701
21.02.2019, 13:49 9
Цитата Сообщение от Rikozenit Посмотреть сообщение
Затем применил модуль для очистки проектов ACCESS от мусора
декомпиляция это и есть.

Тогда вам остаётся только искать тормозящий модуль, возможно запрос какой тормозит, тогда нужно будет делать временную таблицу. Вообщем начните с обработок большого количества данных, проверьте их.

Цитата Сообщение от Rikozenit Посмотреть сообщение
тем медленнее начинают отрабатывать скрипты VBA (заметно даже на глаз, но для верности замерял по таймеру).
кстати про таймер, вы используете таймеры на формах?
0
Rikozenit
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 97
21.02.2019, 15:30  [ТС] 10
Цитата Сообщение от alvk Посмотреть сообщение
кстати про таймер, вы используете таймеры на формах?
Кое-где использую. Тоже уже об этом подумал и закомментировал таймеры через поиск вообще во всём проекте. Не помогло((
0
Eugene-LS
3877 / 2233 / 422
Регистрация: 05.10.2016
Сообщений: 6,209
21.02.2019, 15:41 11
Цитата Сообщение от Rikozenit Посмотреть сообщение
чем дольше открыта база, тем медленнее начинают отрабатывать скрипты VBA
Option Explicit - включено?
Объектные переменные везде обнуляете после использования?
0
Rikozenit
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 97
21.02.2019, 15:58  [ТС] 12
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Option Explicit - включено?
обязательно)
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Объектные переменные везде обнуляете после использования?
Вообще не обнуляю...
0
Eugene-LS
3877 / 2233 / 422
Регистрация: 05.10.2016
Сообщений: 6,209
21.02.2019, 16:02 13
Цитата Сообщение от Rikozenit Посмотреть сообщение
Вообще не обнуляю...
Так может где, то что и остаётся висеть ... может зацикливание где?
Кстати замедление происходит не зависимо от кол-ва пользователей?
1
MrShin
254 / 222 / 57
Регистрация: 18.06.2015
Сообщений: 474
22.02.2019, 09:17 14
Цитата Сообщение от Rikozenit Посмотреть сообщение
Вообще не обнуляю...
Нужно закрывать и обнулять, особенно это касается рекордсетов, это может являться причиной замедления и нестабильной работы приложения. Закройте для начала все рекордсеты в финальной части обработчика ошибок и попробуйте еще раз.
0
Rikozenit
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 97
25.02.2019, 11:37  [ТС] 15
Цитата Сообщение от MrShin Посмотреть сообщение
Нужно закрывать и обнулять, особенно это касается рекордсетов, это может являться причиной замедления и нестабильной работы приложения. Закройте для начала все рекордсеты в финальной части обработчика ошибок и попробуйте еще раз.
В общем, что было проделано в пятницу: импортировал всю интерфейсную часть в основную с таблицами, обнулил все объектные переменные Set XXX = Nothing в конце процедур, выполнил декомпиляцию, затем откомпилировал, сжал и восстановил базу, затем выполнил разделение базы.
Не помогло(
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Кстати замедление происходит не зависимо от кол-ва пользователей?
Уже сегодня заметил следующую закономерность: как только после меня в базу заходит любой пользователь - сразу же процедура, которая выполнялась 0,6 сек начинает выполняться 6-10 секунд. Даже если этот новый пользователь кроме авторизации ничего не делал. Выключаешь Аксесс, включаешь заново и до тех пор пока ты "последний из могикан" - всё летает.
Что с этим делать, не понимаю...(
0
alvk
Эксперт MS Access
5799 / 3684 / 201
Регистрация: 12.08.2011
Сообщений: 9,701
26.02.2019, 08:39 16
Цитата Сообщение от Rikozenit Посмотреть сообщение
Все пользователи заходят в базу через интерфейсный файл
Как они его открывают?
1) Напрямую
2) или через ярлык с mdw?
Как они заходят на сервер?
1) Просто по сетке
2) или через RDP?
Если все ответы пункт 1, то вам нужно сделать пункт 2, хотя бы частично.
0
Rikozenit
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 97
26.02.2019, 09:25  [ТС] 17
alvk, без mdw. Открывают напрямую через свои ярлыки с рабочих столов файл с расширением .accdb. (пробовал и .accde - картина та же)
Просто по сетке.
Пошёл изучать пункты 2. Спасибо!
0
alvk
Эксперт MS Access
5799 / 3684 / 201
Регистрация: 12.08.2011
Сообщений: 9,701
26.02.2019, 09:28 18
Цитата Сообщение от Rikozenit Посмотреть сообщение
Открывают напрямую через свои ярлыки с рабочих столов файл с расширением .accdb.
Тогда либо RDP, либо каждому свой accdb. Сейчас вы их просто гоняете по сети целиком.
0
ltv_1953
Эксперт MS Access
13302 / 6011 / 1201
Регистрация: 21.06.2012
Сообщений: 10,856
26.02.2019, 09:36 19
Цитата Сообщение от Rikozenit Посмотреть сообщение
Пошёл изучать пункты 2. Спасибо!
Цитата Сообщение от ltv_1953 Посмотреть сообщение
по RDP

Не по теме:

Не прошло и недели

0
Rikozenit
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 97
26.02.2019, 12:37  [ТС] 20
Цитата Сообщение от alvk Посмотреть сообщение
каждому свой accdb
каждому свой accdb наверное не поможет: все пользователи заходят с одного файла, а я сижу со своего собственного.
И когда новый юзер заходит - у меня тоже начинает тормозить.

Добавлено через 2 часа 41 минуту
Цитата Сообщение от alvk Посмотреть сообщение
Как они его открывают?
Хочу внести ясность: заходят напрямую с одного файла accdb, но через форму авторизации с выбором имени пользователя и пароля - и дальше каждый юзер попадает в свою форму. В этом смысле, вход через файл рабочей группы mdw будет чем-то принципиально отличаться? И повлияет ли это как-то на быстродействие?
0
26.02.2019, 12:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2019, 12:37

Замедление работы программы
Недавно стал изучать язык lua решил попробовать написать игру. Проблема в том что написанная мной...

Замедление работы компьютера
Добрый день, Проблема следующая: внезапно стал тормозить компьютер. Началось все с зависания...

Замедление работы программы
Здравствуйте, моя программа вычисляет некоторые значения и рисует точку. Дело в том, что по мере...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru