|
Progress bar
|
|||
---|---|---|---|
#18+
Всем привет! Столкнулся с небольшой проблемой. Есть база access которая запускает большое количество процедур на сервере после нажатия на кнопку. Хотел сделать примитивный progress bar что бы было понимание на каком степе сейчас идет обработка (что бы было понимание сколько еще примерно осталось времени, так как суммарное время отработки занимает до 2х часов, а количество вовлеченных процедур около 30 штук). Сделал новую форму, которая открывается после запуска основной процедуры, на всю форму растянуто текстовой поле куда постятся логи по мере выполнения процедур. На этом вроде как все ОК, проблемы нет, система работает. Проблема начинает возникать в тот момент когда access благополучно зависает (not responding), и естественно, в этот момент форма перестает обновляться, и все изменения отображаются разом после того как весь процесс отработал. Как я только не пытался это обойти, и вешал таймер в самом коде между запусками процедур: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
И через me.TimerIterval Код: vbnet 1. 2. 3.
Ничего из этого мне не помогло. Пытался даже начать отображать логи в cmd или powershell Код: vbnet 1.
Но тут столкнулся с другой проблемой, как первоначально передать набор команд в cmd я понимаю и знаю, а вот как дальше работать с созданной cmd зная ее PID я не понимаю. Надеюсь у вас есть идеи как с этим можно справиться. Как самый "костыльный" вариант, можно начать постить результат транзакций в отдельной таблице, создавать через объект отдельную сессия экселя, делать внутри него подключение к данной таблице и принудительно рефрешить таблицу, но мне этот вариант как то совсем не нравится. Заранее спасибо за помощь и варианты. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2015, 16:19 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Посмотрите Do Events. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2015, 16:26 |
|
Progress bar
|
|||
---|---|---|---|
#18+
1244тады лучче поднять чо-нить на авиТак, для примеру... Размятся... ЗЫ. На полное авторство не претендую. Использован код и идеи других мемберов форума sql.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2015, 20:51 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Панург, Пытался применить данный код с тяжелыми SQL запросами. Картинка появляется, но зависает и не шевелиться до тех пор пока не отработает запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 14:43 |
|
Progress bar
|
|||
---|---|---|---|
#18+
__MichelleПосмотрите Do Events. Поддерживаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 14:48 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Casper2002, для запросов было ещё такое решение :) http://am.rusimport.ru/MSAccess/topic.aspx?ID=433 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 14:58 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Casper2002Панург, Пытался применить данный код с тяжелыми SQL запросами. Картинка появляется, но зависает и не шевелиться до тех пор пока не отработает запрос.Выше правильно отметили про DoEvents . Ещё добавлю - когда выполняется запрос нужно чтобы VBA IDE была закрыта ! Ну и пример с открытием запроса на 10 000 000 записей. Можно и больше, ждать долго. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 16:23 |
|
Progress bar
|
|||
---|---|---|---|
#18+
guest_rusimport, Такой вариант очень увеличивает время открытия запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 16:24 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Панург Ну и пример с открытием запроса на 10 000 000 записей. Можно и больше, ждать долго. Точно также появляется рисунок и зависает... (Office 2010) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 16:53 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Casper2002, не, не тестировал. Увы, один поток. Возможно и есть способ решения, но пока некогда его искать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 17:04 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Casper2002Тоже самое... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 01:11 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Теперь анимация заработала, но вылез другой баг. Теперь окошечко с анимацией отвязана от экрана MS Access и при передвижении окна остается на том же месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 12:12 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Casper2002, а ты не двигай окно приложения ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 12:28 |
|
Progress bar
|
|||
---|---|---|---|
#18+
В любом случае это мега прогресс (то есть успех :) ) как для MS Access-а. Только пока непонятно как можно преобразовать новый код для общего использования вида: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Где ProgressBar - процедура вкл/вык прогресс бара. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 12:42 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Casper2002, А где ТС? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 12:46 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Casper2002, для DAO можно, наверное, ещё так попробовать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 16:37 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Casper2002, вот что делает коллективный разум! Суммируя и внося коррективы получил так (см. пример) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 19:41 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Панург, а можно сделать, чтобы прогрессбар крутился внутри формы frmTest? В смысле так наложить frmWait на frmTest? И ещё. сделать у AVI прозрачный фон. Или это не возможно Тогда может вместо AVI использовать GIF? У него фон можно сделать прозрачным. Смотрелось бы просто здорово. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 21:46 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Jossа можно сделать, чтобы прогрессбар крутился внутри формы frmTest?Можно сам контрол создать прямо на форме. Ну или отцентрировать форму по форме. В последнем примере форма центрируется относительно окна Access. JossИ ещё. сделать у AVI прозрачный фон.Хм. А у меня AVI везде получается полупрозрачный... Вместе с формой. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 04:11 |
|
Progress bar
|
|||
---|---|---|---|
#18+
ПанургХм. А у меня AVI везде получается полупрозрачный... Вместе с формой.Проверено на Win Xp SP3 и Win7, Access XP, Access XP RunTime, Access 2010. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 04:17 |
|
Progress bar
|
|||
---|---|---|---|
#18+
ПанургПанургХм. А у меня AVI везде получается полупрозрачный... Вместе с формой.Проверено на Win Xp SP3 и Win7, Access XP, Access XP RunTime, Access 2010.Это понятно. Прозрачность Вы задаёте для формы. Поясняю свою хотелку. Есть у немя длинные операции. Например, некоторые расчёты, копирование базы, ну и создание архива. Пользователей нервирует отсутствие сообщений на экране. Висит форма "Идёт процесс". Хотелось бы к этой форме прицепить вывод авишки. Где-нибудь рядом с надписью. Неплохо бы смотрелась авишка в качестве бегущего индикатора, как при загрузке Windows XP. А на счёт GIF Вы не задумывались? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 09:49 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Joss, а тут мало от меня зависит. Это стандартный контрол существующий с Win95. У тебя же есть пример с ним Описание элементов управления ActiveX (21 элемент) , там смотри Animation . Только не цепляем библиотек и рисуем в реальном времени. AVI можно засунуть любую или эту подкорректировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 10:06 |
|
Progress bar
|
|||
---|---|---|---|
#18+
Панург, Уже лучше но пока еще 2. То есть не до конца то что хотелось бы. :) Мне нужно чтобы когда запускались мои процедуры/запросы анимация не зависала. В основном зависания происходят на выполнении кода вида CurrentDb.Execute... Я так понимаю нужно как-то использовать DoEvents/WithEvents но пока не понял как это сделать... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 14:49 |
|
|
start [/forum/topic.php?fid=45&fpage=121&tid=1614273]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
others: | 24ms |
total: | 207ms |
0 / 0 |