powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как бороться с тормозами
32 сообщений из 32, показаны все 2 страниц
Как бороться с тормозами
    #32159606
Dimblch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как побороть проблемму тормозов , или где найти ответ на сей вопрос .
Есть серверная часть базы(mdb) содержащая таблицы и клиентская часть (mdb) лежащая на локальной машине к которой эти таблицы прилинкованы. При запуске клиента очень долго открывается форма (в форме ,она табличная, есть вычисляемые поля , поля со списками на основе данных из нескольких таблиц ) .
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32159630
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Можно убирать вещи, вызывающие подозрение, по одной и смотреть, что получилось.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32159636
Dimblch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле убирать поля которые , могут вызвать эту проблемму ?
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32159637
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Поля, контролы, обращения к функциям и т.д. Как только окажется, что работает быстро, - значит проблема найдена. Вторым этапом можно будет ее решать.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32159648
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однажды наступает момент, когда Акес уже не может справляться с потребностями клиента в полях-со-списками, подчинеными формами, вычисляемыми полями, все более возрастающим объемом данным и т.п. Программа медленно умирает, выход я нашел один - MS SQL. Что сейчас и осваиваю. И чем больше я узнаю, тем мне становиться себя жалче за бесцельно потраченные годы на Акес :(

Если кто-то хочет возразить, что акес прекрасно работает в сети, я спорить не буду. У каждого свои приложения, у каждого разный уровень требований к интерфейсу. ( например, у меня клиент попросил чтобы при вводе оплат всегда показывалась долг клиента (событие ТекущаяЗапись), а потом удивлялся как это стало медленно работать через несколько месяцев, пришлось на расчет кнопку вешать)

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

Можно сделать элементарное сворачивание периодов (выкинуть данные из действующей базы в архив), но тогда возрастет сложность проведения аналитики по всем периодам. Это, наверное, самый оптимальный путь. Но сделать сворачивание данных для уже разработанной системы очень сложно, правда выгода будет заметна сразу для он-лайн ввода и обработки, но будут еще большие тормоза при попытках получать анализы (многочисленные Union,
вычленение данных из разных архивных баз/таблиц и т.п.), хотя и тут есть выход, например, через временные таблицы.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32159678
Dimblch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно как то получается . Прошерстил всё что используется в форме ничего не нашел .. Попрежнему форма открывается очень медленно . A запрос для этой формы отрабатывает в течении нескольких секунд
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32159683
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А если без запроса? Я серьезно.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32159691
Dimblch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял , то есть как без запроса?
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32159695
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Проверяем гипотезу, что запрос не виноват.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32159936
2AN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем больше в форме вычисляемых полей (в которых написана формула), тем медленней она работает. Формулы лучше вносить в запрос, а в форме выдавать как поля.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160061
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2an

>Формулы лучше вносить в запрос, а в форме выдавать как поля.


Почему-то микрософт считает иначе:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Если необходимо вывести результаты выражений, старайтесь поместить их в 
элемент управления в форме или отчете. Например, предыдущий запрос можно 
преобразовать в запрос с параметрами, в котором выводится приглашение 
ввести значение для поля «МойСтолбец», а затем на его основе создать 
форму или отчет. Затем в форму или отчет можно добавить вычисляемый 
элемент управления, выводящий на экран строки «Привет» или «Пока» в 
зависимости от значения в поле «MyColumn». 

...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160064
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Сенин Виктор
Майкрософт может считать как угодно, но практика (моя) показывает, что при вынесении вычисляемых полей в запрос скорость работы формы (хотя бы просто ее отрисовка) увеличивается. Базовых запрос может медленнее открываться, то в дальнейшем все летает. Если же делать вычисляемые поля в форме, то получаются равномерно размазанные тормоза.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160083
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лоху

К сожалению, мой опыт показывает, что основной тормоз это подчиненая форма, условное форматирование, поля со списками. Вычисляемых полей я делаю мало (1 или 2 от силы, все нужные расчеты по нажатию кнопки, например) поэтому мог и не заметить тормоза от них.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160176
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переодически сталкиваюсь с проблемой быстродействия.
Причём основная форма открывается за пару секунд. При постоянных доработках клиентского интерфейса (через месяц другой) быстродействие заметно снижается. Пришёл к выводу, что всё встаёт на свои места при импорте всех обьектов в новую БД, и ёё перекомпилировании.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160235
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AItis
>Пришёл к выводу, что всё встаёт на свои места при импорте всех обьектов в новую БД, и ёё перекомпилировании.

Ну, значит тебе повезло. В моем случае, импорт в др. базу, дает только уменьшение размера оной. Никакого увеличения производетельности нет.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160240
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А уменьшение размера не может не влиять на производительность Правда, глазу это может быть незаметно.
Вместо импорта можно decompile - восстановить - сжать - скомпилировать. Должно к тому же эфекту приводить.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160310
Dimblch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С тормозами разобрался ....
Сделал для каждой формы свой запрос (в том числе и для подчиненных)
2an > Формулы лучше вносить в запрос, а в форме выдавать как поля выдавать как поля. По этому пути я и пошел
Всё стало работать быстрее
А далее проиндексировал все поля используемые в запросах (которые до сего момента не были индексированными) стало еще круче
Но ё сперва сделал , а потом в форум полез. Если бы наоборот потратил бы меньше времени :)
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160320
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> А далее проиндексировал все поля используемые в запросах

С этого стоило начать. :^)
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160332
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни нада индексировать все поля!!!
Научи дурака богу молиться... Шутю.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160333
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А далее проиндексировал все поля используемые в запросах
Новый подход в индексировании?

Или ты имел ввиду все поля исполmзуемые в условиях отбора и установки связей?
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160334
Dimblch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
Ну так умная мысля приходит апосля :)
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160339
Dimblch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лох позорный
Дык я все и не индексировал
А коли так , тогда скажи какие надо индексировать
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160343
Dimblch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Senin Victor
Именно так я и поступил
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160344
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Лох Позорный, Senin Viktor

Вот Dimblch меня правильно понял. :^)
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160360
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лоху
>Вместо импорта можно decompile - восстановить - сжать - скомпилировать. Должно к тому же эфекту приводить.

Неа. Не приведет. Пример: база 19Мб - делаем декопиле-сжать - разме 19 Мб
Импортируем: размер 11 Мб.
Работаем (создаем пару форм, 10 запросов) - размер 30 Мб; сжимаем - размер 19 Мб - импортируем 11 Мб ...

А производительность зависит от множества факторов, один из которых сжатая база.
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160367
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Сенин Виктор
Согласен. Импорт незаменим
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160379
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лоху
Мы в Россее (если ты здесь) всегда импорт любили
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160816
Mike_LV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При редактировании модулей БД разбухает. Не помню, где нашел код для перезаписи модулей, но пользуюсь периодически уже года три. После прогона БД и ее последующего сжатия размер уменьшается процентов на 25-30. Глюков не наблюдается. Те, кто опасаются, могут попробовать сначала на копии БД.

ClearModules 'имя модуля.
'Можно изменить, но тогда надо поменять и значение Const MyModuleName
Option Compare Text
Option Explicit

Public Function ClearMdl()
Dim MN As String, I As Integer, j As Integer, n As Integer
Dim mdl As Module, k As Long, S As String
Dim PathTempFile As String, ContainerName As String
Dim NN(10000) As String
Dim q As QueryDef, m As Long
'Эти константы можно изменять
'имя модуля с этой программой
Const MyModuleName As String = "ClearModules"
'имя временного запроса
Const QueryTempName As String = "_$Temp"
'имя временного файла
Const FileTempName As String = "~Module.txt"
'Будем размещать временный файл для перекачки модулей и 'запросов в своем каталоге
S = CurrentDb.Name
PathTempFile = left(S, Len(S) - Len(Dir(S))) + FileTempName
'Основной цикл по видам контейнеров
For I = 1 To 4
Select Case I
Case 1
ContainerName = "Forms"
Case 2
ContainerName = "Reports"
Case 3
ContainerName = "Modules"
Case 4
ContainerName = "QueryDefs"
End Select
SysCmd acSysCmdSetStatus, ContainerName
If I < 4 Then
n = CurrentDb.Containers(ContainerName).Documents.count - 1
For j = 0 To n
NN(j) = CurrentDb.Containers(ContainerName).Documents(j).Name
Next j
Else
n = CurrentDb.QueryDefs.count - 1
k = 0
For j = 0 To n
S = CurrentDb.QueryDefs(j).Name
If left(S, 1) <> "~" Then
NN(k) = S
k = k + 1
End If
Next j
n = k - 1
End If
If n >= 0 Then SysCmd acSysCmdInitMeter, ContainerName, (n + 1)
For j = 0 To n
MN = NN(j)
Select Case I
Case 1
DoCmd.OpenForm MN, acDesign, , , , acHidden
If Not Forms(MN).HasModule Then GoTo Nextj
Set mdl = Forms(MN).Module
Case 2
DoCmd.OpenReport MN, acDesign
If Not Reports(MN).HasModule Then GoTo Nextj
Set mdl = Reports(MN).Module
Case 3
If MN = MyModuleName Then GoTo Nextj
DoCmd.OpenModule MN
Set mdl = Modules(MN)
End Select
If Dir(PathTempFile) <> "" Then Kill PathTempFile
Open PathTempFile For Binary Access Write As #1
If I < 4 Then
For k = 1 To mdl.CountOfLines
S = mdl.Lines(k, 1) & Chr(13)
m = m + Len(S)
Put #1, , S
Next k
Else
On Error Resume Next
DoCmd.DeleteObject acQuery, QueryTempName
DoCmd.Rename QueryTempName, acQuery, MN
Set q = CurrentDb.QueryDefs(QueryTempName)
S = q.SQL
m = m + Len(S)
Put #1, , S
End If
Close #1
Select Case I
Case 1
Forms(MN).HasModule = False
DoCmd.Save acForm, MN
Forms(MN).HasModule = True
Set mdl = Forms(MN).Module
Case 2
Reports(MN).HasModule = False
DoCmd.Save acReport, MN
Reports(MN).HasModule = True
Set mdl = Reports(MN).Module
Case 3
If mdl.Type Then
DoCmd.RunCommand acCmdNewObjectClassModule
Else
DoCmd.RunCommand acCmdNewObjectModule
End If
S = Modules(Modules.count - 1).Name
DoCmd.Close acModule, MN
DoCmd.DeleteObject acModule, MN
DoCmd.Save acModule, S
DoCmd.Close acModule, S
DoCmd.Rename MN, acModule, S
DoCmd.OpenModule MN
Set mdl = Modules(MN)
End Select
If I < 4 Then
mdl.DeleteLines 1, mdl.CountOfLines
mdl.AddFromFile PathTempFile
Else
Open PathTempFile For Binary Access Read As #1
S = String(LOF(1), " ")
Get #1, , S
Close #1
On Error Resume Next
Err.Clear
Set q = CurrentDb.CreateQueryDef(MN, S)
If Err <> 0 Then
MsgBox "Ошибка в запросе " + MN + vbCrLf + "№ ошибки: " & Err & vbCrLf & Err.Description, vbInformation
DoCmd.Rename MN, acQuery, QueryTempName
End If
On Error GoTo 0
End If
Nextj:
Select Case I
Case 1: DoCmd.Close acForm, MN, acSaveYes
Case 2: DoCmd.Close acReport, MN, acSaveYes
Case 3: If MN <> MyModuleName Then DoCmd.Close acModule, MN, acSaveYes
End Select
SysCmd acSysCmdUpdateMeter, (j + 1)
Next j
Next I
On Error Resume Next
DoCmd.DeleteObject acQuery, QueryTempName
Kill PathTempFile
SysCmd acSysCmdClearStatus
MsgBox "Конец работы." + vbCrLf + " Переписано " & Format(m, "# ### ### ### ##0") & " байт.", vbInformation
End Function

Кому надо пользуйтесь
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160819
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем это лучше импорта всех объектов в новую базу?
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32160833
Mike_LV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A vot i link na ClearModules
http://www.hiprog.com/access/article.asp?id=321
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32162383
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ALL
иногда предлагают mde делать.
a c 2000 существует возможность сжатия автоматом при закрытии базы - и голову ломать не надо почти всегда сжата ( на момент открытия)
...
Рейтинг: 0 / 0
Как бороться с тормозами
    #32162428
Фотография TatianaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тоже пользуюсь этим ClearModules 1,5 года в Access97
а в 2000 он не работает , очень жаль
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как бороться с тормозами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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