Автор | Сообщение |
|
| постоянный участник
|
Пост N: 6201
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.03.19 10:47. Заголовок: Подвисает программа....
При длительных операциях "подвисает" программа, в окошке появляется программа не отвечает. Длительная операция это: запись значений из массива 10 тыс. элементов по 6 значений в базу 60 тыс.записей + ещё в одну базу запись 3-4 значений. Вот на этих операциях прога подвисает (секунд 30-50 висит, это на хорошем компе): // БД ПРИХОДА денег SELECT(cAliasPlt) DBCOMMIT() ProcessMessages() // ОБЯЗАТЕЛЬНО ! Чтобы форма НЕ замирала // БД платы абонентов SELECT(cAliasCalc) DBCOMMIT() Как исправить ситуацию ?
|
|
|
Новых ответов нет
[см. все]
|
|
|
| постоянный участник
|
Пост 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(), тормозит показ иконок в другом потоке ?
|
|
|
|
| |
Пост N: 7027
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.03.19 18:20. Заголовок: Doevents() можно про..
Doevents() можно пробнуть прицепить А если DBCOMMIT() убрать , тоже подвисает ?
|
|
|
|
| постоянный участник
|
Пост 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
|
|
|
|
| |
Пост N: 7028
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.03.19 21:42. Заголовок: Andrey пишет: запис..
Andrey пишет: цитата: | запись значений из массива 10 тыс. элементов по 6 значений в базу 60 тыс.записей |
| На таком кол-ве если после каждой записи делать Dbcommit , то конечно будут тормоза и подвисания. Сделай в самом конце Dbcommit для нужных рабочих областей
|
|
|
|
| постоянный участник
|
Пост N: 6203
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.03.19 22:04. Заголовок: Dima пишет: На тако..
Dima пишет: цитата: | На таком кол-ве если после каждой записи делать Dbcommit , то конечно будут тормоза и подвисания. Сделай в самом конце Dbcommit для нужных рабочих областей |
| Делаю в самом конце после расчётов Dbcommit для 2х баз. SergKis пишет: цитата: | Как у тебя сделан добавление\модификация записей ( dbappend(), ... ) ? |
| Добавление записей у меня нет. Расчёт идёт уже по готовой базе. В конце цикла стоит ProcessMessages(), там не подвисает. После расчёта делаю для 2х баз Dbcommit - вот и подвисает. Раньше такого не было, но уж больно база большая разрослась, до 60 тыс.записей.
|
|
|
|