powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Progress bar
25 сообщений из 37, страница 1 из 2
Progress bar
    #38892573
Intension
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Столкнулся с небольшой проблемой.
Есть база 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
Progress bar
    #38892587
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите Do Events.
...
Рейтинг: 0 / 0
Progress bar
    #38896590
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1244тады лучче поднять чо-нить на авиТак, для примеру... Размятся...
ЗЫ. На полное авторство не претендую. Использован код и идеи других мемберов форума sql.ru
...
Рейтинг: 0 / 0
Progress bar
    #39100741
Casper2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

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

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

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

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

Точно также появляется рисунок и зависает... (Office 2010)
...
Рейтинг: 0 / 0
Progress bar
    #39100979
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Casper2002, не, не тестировал. Увы, один поток. Возможно и есть способ решения, но пока некогда его искать.
...
Рейтинг: 0 / 0
Progress bar
    #39101063
А так?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А так?
...
Рейтинг: 0 / 0
Progress bar
    #39101077
Casper2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоже самое...
...
Рейтинг: 0 / 0
Progress bar
    #39101304
Тогда так
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Casper2002Тоже самое...
...
Рейтинг: 0 / 0
Progress bar
    #39101611
Casper2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь анимация заработала, но вылез другой баг. Теперь окошечко с анимацией отвязана от экрана MS Access и при передвижении окна остается на том же месте.
...
Рейтинг: 0 / 0
Progress bar
    #39101635
\\\\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Casper2002, а ты не двигай окно приложения
...
Рейтинг: 0 / 0
Progress bar
    #39101666
Casper2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В любом случае это мега прогресс (то есть успех :) ) как для 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
Progress bar
    #39101672
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Casper2002,

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

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

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


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