On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 6201
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.03.19 10:47. Заголовок: Подвисает программа....


При длительных операциях "подвисает" программа, в окошке появляется программа не отвечает.
Длительная операция это:
запись значений из массива 10 тыс. элементов по 6 значений в базу 60 тыс.записей + ещё в одну базу запись 3-4 значений.

Вот на этих операциях прога подвисает (секунд 30-50 висит, это на хорошем компе):
   // БД ПРИХОДА денег  
SELECT(cAliasPlt)
DBCOMMIT()

ProcessMessages() // ОБЯЗАТЕЛЬНО ! Чтобы форма НЕ замирала

// БД платы абонентов
SELECT(cAliasCalc)
DBCOMMIT()

Как исправить ситуацию ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]


постоянный участник




Пост N: 6202
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.03.19 11:01. Заголовок: Пробовал сделать так..


Пробовал сделать так:
 
WaitThreadCreateIcon( 'Обработка данных', 'Запись на диск ...' ) // запуск без времени

SELECT(cAliasPlt)
DBCOMMIT()
ProcessMessages() // ОБЯЗАТЕЛЬНО ! Чтобы форма НЕ замирала

SELECT(cAliasCalc)
DBCOMMIT()

WaitThreadCloseIcon() // kill the window waiting

Модуль функций с бесконечным бегунком - WaitThreadCreateIcon() взят из "Composite TSBrowse" на странице сайта
http://hmgextended.com/applications.html
Но нет показа (смены) иконок при этом. Хотя в других случаях есть.
Что за операция такая DBCOMMIT(), тормозит показ иконок в другом потоке ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7027
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.19 18:20. Заголовок: Doevents() можно про..


Doevents() можно пробнуть прицепить
А если DBCOMMIT() убрать , тоже подвисает ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2288
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.03.19 19:00. Заголовок: Andrey Как у тебя с..


Andrey
Как у тебя сделан добавление\модификация записей ( dbappend(), ... ) ?
Попробуй dbCommit() распределить на добавляемые записи, к примеру через 10 записей, добавив DoEvents()
DoEvents()
dbAppend()
REPLACE ... with ...
If ( ++i ) >= 10
dbCommit()
i := 0
EndIf

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7028
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.19 21:42. Заголовок: Andrey пишет: запис..


Andrey пишет:

 цитата:
запись значений из массива 10 тыс. элементов по 6 значений в базу 60 тыс.записей


На таком кол-ве если после каждой записи делать Dbcommit , то конечно будут тормоза и подвисания.
Сделай в самом конце Dbcommit для нужных рабочих областей

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6203
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.03.19 22:04. Заголовок: Dima пишет: На тако..


Dima пишет:

 цитата:
На таком кол-ве если после каждой записи делать Dbcommit , то конечно будут тормоза и подвисания.
Сделай в самом конце Dbcommit для нужных рабочих областей


Делаю в самом конце после расчётов Dbcommit для 2х баз.

SergKis пишет:

 цитата:
Как у тебя сделан добавление\модификация записей ( dbappend(), ... ) ?


Добавление записей у меня нет. Расчёт идёт уже по готовой базе.
В конце цикла стоит ProcessMessages(), там не подвисает.
После расчёта делаю для 2х баз Dbcommit - вот и подвисает.
Раньше такого не было, но уж больно база большая разрослась, до 60 тыс.записей.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 274
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет