|
|
|
| Доброго времени! Проблема в принципе и не проблема.
В моей программе выполняется формирование множества отчетов, некоротые из них формируются от 30 до 180 (3 мин) секунд. Так вот хотелось бы пока они формируются висело какое нибудь сообщение, например "Отчет формируется. Ждите" вот только думаю как это реализовать. Попробывал открывать при начале события форму, а при окончании события закрывать... Все хорошо, только на слабых машинах, а таких большенство, открывается только скелет формы, так как система очен ь перегружена.... Вот хотел послушать ваши советы, может кто делал подобное... | |
|
| |
|
|
|
|
| Я так подозреваю, что "рыть" следует в другом направлении.
Оптимизировать алгоритмы, запросы и прочая, дабы уменьшить время формирования отчетов. | |
|
| |
|
|
|
| Час, спасибо за ссылки, буду работать!
Лукас, у меня доходит до 5000 записей, которые выгружаются в ексель, ну быстро, вот только форматируются долго... | |
|
| |
|
|
|
| Насчёт форматирования - можно попробовать заранее создать шаблоны в excel с отформатированными столбцами ячеек и выводить данные не форматируя их....
Отказаться от изменения цвета задав формат ячейки в шаблоне (заблаговременно)
===========================================================================
Открываем шаблон и туда выливаем данные , а формат уже задан | |
|
| |
|
|
|
| Ну вот выплюнул декартово множество на 10000 записей с простеньким форматированием за 3 секунды.
Что за такое сложное форматирование? | |
|
| |
|
|
|
| To Lukas
думаю что вот
http://hiprog.com/forum/read.php?id_forum=1&id_theme=6973&page=2 | |
|
| |
|
|
|
| snipe прав
во-первых отчет генериться и какой он будет не известно (кстате лукас на примере твоей кукурузы)
во-вторых, много объединений, которые выполняются по определенной логике, в зависимости от формы отчета | |
|
| |
|
|
|
| Вообще для начала следует определить "тормознутые" участки форматирования.
Навтыкать между блоками
Debug.print "начало блока...", VBA.Timer
Debug.print "конец блока...", VBA.Timer
Найти наиболее тормознутые, и попробовать другие варианты.
Может попробовать именовать Range?
А вообще, объединение ячеек и вручную заметно подтормаживает. | |
|
| |
|
|
|
|
Попробывал открывать при начале события форму, а при окончании события закрывать... Все хорошо, только на слабых машинах, а таких большенство, открывается только скелет формы
| После вызова формы вставьте DoEvents - должно помочь.
Если формирование отчетов выполняется в цикле, то вставьте DoEvents внутри цикла (сразу после изменения текста в форме, если вы такое делаете). | |
|
| |
|
|
|
| А нельзя ли после вызова формы - ее перерисовать (refresh) или (repaint) и все.. Она прорисуется, но если пользователь ее сдвиет, то она скорее всего снова станет скелетом...
Празда в этом случае, каждые 50 записей в цикле перерисовывать форму)))
Это не прокатит? Мне просто не проверить... | |
|
| |