Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отображение прогресса при UPDATE базы [D6]


Страницы:   1 2

leonidus ©   (2008-05-30 16:33:00) 

Юзаю Access-базу через ADO. Делаю UPDATE большой базы, и на некоторых слабеньких машинах он длится по 10-15 секунд в течении которого программа подвисает и юзер нервничает не понимая что происходит. Подскажите пожалуйста как в ходе обновления показывать прогресс работы или хотябы периодически иметь возможность вызвать application.ProcessMessages?


Умище-011   (2008-06-01 18:55:00) [1]

Удалено модератором
Примечание: Offtopic


Ум_ще-011   (2008-06-01 18:53:00) [2]


> можно то можно, но вот не нужно это факт.


Может быть.

>Автор

Проиндексируй в tab поле header.


sniknik   (2008-06-01 18:14:00) [3]

> Это не значит, что нельзя или не нужно
можно то можно, но вот не нужно это факт.
и даже вредно, заморачиваться на этом игнорируя(/не разбираясь) реальную причину тормозов... можно конечно "глаза замазать" но смысл?

у меня простой синхронный запрос за 2.5 сек возвращает 373426 записей (машина тоже старая, не 286й конечно но...). 1000 практически не считается разница по времени (то 0 то 016 миллисекунд) надо на подсчет тиков переходить чтобы замерить... и на это прогресс бар?


Anatoly Podgoretsky   (2008-06-01 18:13:00) [4]

> Ум_ще  (01.06.2008 17:38:31)  [31]

Ему до потоков, как тебе до луны.


Ум_ще   (2008-06-01 17:38:00) [5]


> Anatoly Podgoretsky ©   (01.06.08 17:28) [30]
> > Ум_ще  (01.06.2008 16:07:29)  [29]АДО и так автоматически
> поддерживает выполнение в отдельном потоке с поддержкой
> прогресса.


Это не значит, что нельзя или не нужно в доп. потоке сделать выполнение запроса.


Anatoly Podgoretsky   (2008-06-01 17:28:00) [6]

> Ум_ще  (01.06.2008 16:07:29)  [29]

АДО и так автоматически поддерживает выполнение в отдельном потоке с поддержкой прогресса.


Ум_ще   (2008-06-01 16:07:00) [7]


> leonidus   (30.05.08 16:33) 


Самое простое решение - выполнить последовательность запросов к БД в отдельном потоке. Соответственно, сможешь и ProgressBar организовать при этом.


sniknik   (2008-06-01 12:59:00) [8]

> ну если прогресс сделать в принципе невозможно
почему это невозможно? возможно, но это лишнее (это на 1000 записей то прогресс?... не смешите мои тапочки), с лишними действиями/ограничениями (если выполнение то не будет "конечной точки", нужно делать "плавающий" прогресс). и потом если делать то без асинхронности  не обойтись, ну или организации собственной в потоке, т.к. прогресс перерисовывается в основном потоке и синхронный запрос его же блокирует.
т.е. нужны начальные знания, а ты еще даже не определился что ты делаешь выборку или команду, асинхронно выполнение или фетчь.


Anatoly Podgoretsky   (2008-06-01 11:18:00) [9]

AdoDataSet1.ExecuteOptions:= подставить правильное значение, их то всего 4


Умищъ   (2008-06-01 02:47:00) [10]


> leonidus

А как у вас всё организовано?


leonidus   (2008-06-01 02:17:00) [11]

ну если прогресс сделать в принципе невозможно, то нужно хотябы исключить подвисание приложения.


Германн   (2008-06-01 02:14:00) [12]


> leonidus   (01.06.08 01:57) [23]
>
> Анатолий, причем тут выборки и команды, у меня вопрос в
> другом, мне нужно сделать так чтобы пока происходит выборка
> основной поток не подвисал. Прошу помочь мне в этом.
>


> Отображение прогресса при UPDATE базы [D6]
>
> leonidus   (30.05.08 16:33)

Ты уж, Саид, определись, что тебе нужно.


leonidus   (2008-06-01 01:57:00) [13]

Анатолий, причем тут выборки и команды, у меня вопрос в другом, мне нужно сделать так чтобы пока происходит выборка основной поток не подвисал. Прошу помочь мне в этом.


Anatoly Podgoretsky   (2008-05-31 22:51:00) [14]

Не та конференция, чтобы расписывать элементарщину, а ты сам очень высоко оценил свои знания, написав сюда, а не в начинающие.
Правда большинство твоих вопросов слишком простые и для той конференции. Так что читай справку там черным по белом написанов, всего то десяток строк. А если для тебя нет разницы между выборками и командами, так это знаешь кто виноват.


leonidus   (2008-05-31 22:38:00) [15]

Анатолий я вас очень уважаю, но все же хотел бы получить ответ на свой вопрос, а не простите, посылание на три буквы.


Anatoly Podgoretsky   (2008-05-31 21:27:00) [16]


> Анатолий, простите не понял вас...

Это конференция не для начинающих, надо обладать хотя бы начальными знаниями.


Anatoly Podgoretsky   (2008-05-31 21:24:00) [17]


> Хотя можно и  селект выполнять, вы почитайте как работать
> с запросами, которые выполняются асинхронно.

Выполнять можно команды, а это выборка и поэтому написана ерунда, но врядли программа зависает, надо просто много ждать.


stas   (2008-05-31 21:03:00) [18]

leonidus   (31.05.08 21:00) [16]
Update не выполняется быстрее, он продолжает выполнятся в фоновом режиме


stas   (2008-05-31 21:01:00) [19]

Хотя можно и  селект выполнять, вы почитайте как работать с запросами, которые выполняются асинхронно.


leonidus   (2008-05-31 21:00:00) [20]

сейчас посмотрел, действительно UPDATE выполняется довольно быстно, а вот с SELECT проблемка... его асинхронно никак выполнить нельзя?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо