Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Progress bar / 25 сообщений из 37, страница 1 из 2
02.03.2015, 16:19
    #38892573
Intension
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Всем привет!
Столкнулся с небольшой проблемой.
Есть база access которая запускает большое количество процедур на сервере после нажатия на кнопку.
Хотел сделать примитивный progress bar что бы было понимание на каком степе сейчас идет обработка (что бы было понимание сколько еще примерно осталось времени, так как суммарное время отработки занимает до 2х часов, а количество вовлеченных процедур около 30 штук).
Сделал новую форму, которая открывается после запуска основной процедуры, на всю форму растянуто текстовой поле куда постятся логи по мере выполнения процедур.
На этом вроде как все ОК, проблемы нет, система работает.

Проблема начинает возникать в тот момент когда access благополучно зависает (not responding), и естественно, в этот момент форма перестает обновляться, и все изменения отображаются разом после того как весь процесс отработал.

Как я только не пытался это обойти, и вешал таймер в самом коде между запусками процедур:


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private sub main
CurrentDb.Execute "proc_1"
Forms!Progressbar.Text0 = status_
Forms!Progressbar.Refresh
Sleep 5000
CurrentDb.Execute "proc_2"
End sub



И через me.TimerIterval


Код: vbnet
1.
2.
3.
Private Sub Form_Timer()
Form_Progressbar.Refresh
End Sub



Ничего из этого мне не помогло.

Пытался даже начать отображать логи в cmd или powershell

Код: vbnet
1.
process_id = SHELL("C:\windows\system32\powershell.exe", vbNormalFocus)


Но тут столкнулся с другой проблемой, как первоначально передать набор команд в cmd я понимаю и знаю, а вот как дальше работать с созданной cmd зная ее PID я не понимаю.

Надеюсь у вас есть идеи как с этим можно справиться.

Как самый "костыльный" вариант, можно начать постить результат транзакций в отдельной таблице, создавать через объект отдельную сессия экселя, делать внутри него подключение к данной таблице и принудительно рефрешить таблицу, но мне этот вариант как то совсем не нравится.
Заранее спасибо за помощь и варианты.
...
Рейтинг: 0 / 0
02.03.2015, 16:26
    #38892587
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Посмотрите Do Events.
...
Рейтинг: 0 / 0
05.03.2015, 20:51
    #38896590
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
1244тады лучче поднять чо-нить на авиТак, для примеру... Размятся...
ЗЫ. На полное авторство не претендую. Использован код и идеи других мемберов форума sql.ru
...
Рейтинг: 0 / 0
11.11.2015, 14:43
    #39100741
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Панург,

Пытался применить данный код с тяжелыми SQL запросами. Картинка появляется, но зависает и не шевелиться до тех пор пока не отработает запрос.
...
Рейтинг: 0 / 0
11.11.2015, 14:48
    #39100751
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
__MichelleПосмотрите Do Events.
Поддерживаю.
...
Рейтинг: 0 / 0
11.11.2015, 14:58
    #39100768
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Casper2002,

для запросов было ещё такое решение :)
http://am.rusimport.ru/MSAccess/topic.aspx?ID=433
...
Рейтинг: 0 / 0
11.11.2015, 16:23
    #39100916
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Casper2002Панург,

Пытался применить данный код с тяжелыми SQL запросами. Картинка появляется, но зависает и не шевелиться до тех пор пока не отработает запрос.Выше правильно отметили про DoEvents . Ещё добавлю - когда выполняется запрос нужно чтобы VBA IDE была закрыта !
Ну и пример с открытием запроса на 10 000 000 записей. Можно и больше, ждать долго.
...
Рейтинг: 0 / 0
11.11.2015, 16:24
    #39100922
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
guest_rusimport,

Такой вариант очень увеличивает время открытия запроса.
...
Рейтинг: 0 / 0
11.11.2015, 16:53
    #39100963
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Панург Ну и пример с открытием запроса на 10 000 000 записей. Можно и больше, ждать долго.

Точно также появляется рисунок и зависает... (Office 2010)
...
Рейтинг: 0 / 0
11.11.2015, 17:04
    #39100979
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Casper2002, не, не тестировал. Увы, один поток. Возможно и есть способ решения, но пока некогда его искать.
...
Рейтинг: 0 / 0
11.11.2015, 18:18
    #39101063
А так?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
А так?
...
Рейтинг: 0 / 0
11.11.2015, 18:40
    #39101077
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Тоже самое...
...
Рейтинг: 0 / 0
12.11.2015, 01:11
    #39101304
Тогда так
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Casper2002Тоже самое...
...
Рейтинг: 0 / 0
12.11.2015, 12:12
    #39101611
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Теперь анимация заработала, но вылез другой баг. Теперь окошечко с анимацией отвязана от экрана MS Access и при передвижении окна остается на том же месте.
...
Рейтинг: 0 / 0
12.11.2015, 12:28
    #39101635
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Casper2002, а ты не двигай окно приложения
...
Рейтинг: 0 / 0
12.11.2015, 12:42
    #39101666
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
В любом случае это мега прогресс (то есть успех :) ) как для MS Access-а.

Только пока непонятно как можно преобразовать новый код для общего использования вида:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub cmdPushMe_Click()
ProgressBar True

...
мой код
...

ProgressBar False
End Sub



Где ProgressBar - процедура вкл/вык прогресс бара.
...
Рейтинг: 0 / 0
12.11.2015, 12:46
    #39101672
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Casper2002,

А где ТС?
...
Рейтинг: 0 / 0
12.11.2015, 16:37
    #39102047
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Casper2002,
для DAO можно, наверное, ещё так попробовать :)
...
Рейтинг: 0 / 0
12.11.2015, 19:41
    #39102307
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Casper2002, вот что делает коллективный разум!
Суммируя и внося коррективы получил так (см. пример)
...
Рейтинг: 0 / 0
12.11.2015, 21:46
    #39102397
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Панург, а можно сделать, чтобы прогрессбар крутился внутри формы frmTest? В смысле так наложить frmWait на frmTest? И ещё. сделать у AVI прозрачный фон. Или это не возможно Тогда может вместо AVI использовать GIF? У него фон можно сделать прозрачным. Смотрелось бы просто здорово.
...
Рейтинг: 0 / 0
13.11.2015, 04:11
    #39102521
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Jossа можно сделать, чтобы прогрессбар крутился внутри формы frmTest?Можно сам контрол создать прямо на форме. Ну или отцентрировать форму по форме. В последнем примере форма центрируется относительно окна Access.
JossИ ещё. сделать у AVI прозрачный фон.Хм. А у меня AVI везде получается полупрозрачный... Вместе с формой.
...
Рейтинг: 0 / 0
13.11.2015, 04:17
    #39102523
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
ПанургХм. А у меня AVI везде получается полупрозрачный... Вместе с формой.Проверено на Win Xp SP3 и Win7, Access XP, Access XP RunTime, Access 2010.
...
Рейтинг: 0 / 0
13.11.2015, 09:49
    #39102636
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
ПанургПанургХм. А у меня AVI везде получается полупрозрачный... Вместе с формой.Проверено на Win Xp SP3 и Win7, Access XP, Access XP RunTime, Access 2010.Это понятно. Прозрачность Вы задаёте для формы.

Поясняю свою хотелку.
Есть у немя длинные операции. Например, некоторые расчёты, копирование базы, ну и создание архива. Пользователей нервирует отсутствие сообщений на экране. Висит форма "Идёт процесс". Хотелось бы к этой форме прицепить вывод авишки.
Где-нибудь рядом с надписью.
Неплохо бы смотрелась авишка в качестве бегущего индикатора, как при загрузке Windows XP.

А на счёт GIF Вы не задумывались?
...
Рейтинг: 0 / 0
13.11.2015, 10:06
    #39102655
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Joss, а тут мало от меня зависит. Это стандартный контрол существующий с Win95. У тебя же есть пример с ним Описание элементов управления ActiveX (21 элемент) , там смотри Animation . Только не цепляем библиотек и рисуем в реальном времени.
AVI можно засунуть любую или эту подкорректировать.
...
Рейтинг: 0 / 0
13.11.2015, 14:49
    #39102983
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress bar
Панург,
Уже лучше но пока еще 2. То есть не до конца то что хотелось бы. :)
Мне нужно чтобы когда запускались мои процедуры/запросы анимация не зависала.
В основном зависания происходят на выполнении кода вида CurrentDb.Execute... Я так понимаю нужно как-то использовать DoEvents/WithEvents но пока не понял как это сделать...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Progress bar / 25 сообщений из 37, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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