![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отображение прогресса при UPDATE базы [D6]
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 проблемка... его асинхронно никак выполнить нельзя?