Форум: "Базы";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
ВнизПрогрес для TQuery Найти похожие ветки
← →
ki11er (2003-09-17 18:37) [0]Можно ли как-то получать прогрес выполнения запроса (TQuery)?
Нужно для отрисовки на форме прогресса выполниния длинных запросов.
Спасибо.
← →
Hawk2 (2003-09-17 18:41) [1]Помнится наверное с полгода назад задавали такой вопрос, но конкретного ответа никто не дал. Советовали запускать прогрес в отдельном процессе и т.д.
← →
Reindeer Moss Eater (2003-09-17 18:45) [2]Для реализации этого требуется:
1. Знание времени, которое необходимо для выполнения запроса.
2. Механизм callback вызовов в библиотеке доступа.
Если второе реально есть в некоторых системах, то про первое зачастую сам сервер ничего не знает.
Отсюда вывод - возможны лишь имитации на тему изображения прогресса выполнения запроса.
← →
Hawk2 (2003-09-17 18:52) [3]>1. Знание времени, которое необходимо для выполнения запроса.
Ну на разных машинах может быть разное время.
Если выполняется несколько запросов подряд то можно вставить прогресс между ними.
← →
Reindeer Moss Eater (2003-09-17 18:55) [4]>1. Знание времени, которое необходимо для выполнения запроса.
Ну на разных машинах может быть разное время.
Оно может быть разное и на одной и той же машине. И что?
Если выполняется несколько запросов подряд то можно вставить прогресс между ними.
Ну и польза от такого прогресса? Если имеем 10 запросов и 9 из них выполняются за 1 минуту а десятый за час?
← →
Hawk2 (2003-09-17 19:06) [5]..............
Query1.ExecSQL;
ProgressBar:=10;
..............
Query2.ExecSQL;
ProgressBar:=20;
..............
Query3.ExecSQL;
ProgressBar:=30;
..............
..............
QueryN.ExecSQL;
ProgressBar:=100;
Ну а если в цыкле то с наращиванием ProgressBar:=ProgressBar+10;
Все будет реально показывать. Если запрос затормаживает, то и прогресс останавливается.
← →
Reindeer Moss Eater (2003-09-17 19:08) [6]Будет реально показывать что?
← →
Hawk2 (2003-09-17 19:13) [7]>Будет реально показывать что?
Виполнение N количества запросов.
Я же написал, что это подходит когда исполняются несколько запросов подряд, а если один то наверное можно только иммитировать, как например в некоторых инсталяциях.
← →
ki11er (2003-09-17 19:21) [8]>Если второе реально есть в некоторых системах
Меня интересует конкретно BDE+Paradox. BDE теоретически знает, какую часть фйла с таблицей (пусть для простоты запрос работает только с одной таблицей) он уже обработал и сколько осталось. Вопрос в том, можно ли как-то эту информацию у него выцарапать или нет?
← →
Reindeer Moss Eater (2003-09-17 19:24) [9]BDE теоретически знает, какую часть фйла с таблицей (пусть для простоты запрос работает только с одной таблицей) он уже обработал и сколько осталось. Вопрос в том, можно ли как-то эту информацию у него выцарапать или нет?
Про часть файла может и знает, а вот про время ничего не знает.
Ты прогрессбар чего хочешь сделать? Времени или пространства?
← →
ki11er (2003-09-17 19:30) [10]>Ты прогрессбар чего хочешь сделать? Времени или пространства?
;-))) Процентов ;-)))
← →
MsGuns (2003-09-17 20:26) [11]Когда-то прочитал вот про такой "прогресс-бар":
1. Рисуется бар на 100 делений
2. Запускается интервальный таймер (допустим на 1 сек)
3. Запускается квери
По прерыванию от таймера увеличиваем показание прогресса на 1. Если новое значение = 100, то прогресс чистится, max прогресса удваивается.
Когде кверя закругляется, то для понта прогресс -> max позицию, таймер "убивается", дается слип на сек-другую (для внешнего эффекта можно дотянуть прогресс ускоренными темпами за те же пару сек)
Внешне для средних запросов работает нормально (в смысле более-менее похоже на правду), - главную задачу - убедить узера, что комп не повис,- делает ;)
← →
Zacho (2003-09-17 20:48) [12]
> ki11er (17.09.03 19:21) [8]
В случае с BDE и Парадоксом, imho, вполне подойдет DbiRegisterCallBack. Подробнее см. в bde32.hlp
← →
Anatoly Podgoretsky (2003-09-17 21:36) [13]MsGuns © (17.09.03 20:26) [11]
Убедить пользователя можно с помощью TAnimate
← →
Виталий Панасенко (2003-09-18 09:32) [14]Это есть в RxLib (по крайней мере, в примере работает), но сам не понял, как они это дело делают, кроме того что используют CallBack функции BDE. Получилось только выводить сообщения, ворачиваемые этими функциями...
← →
ki11er (2003-09-18 13:49) [15]2 Виталий Панасенко
Да, есть TDBProgress. Но я в упор не догоняю, как с ним работать. В инете никакого нормального описания не нашел, в ихнем хэлпе тоже. Пример есть, но там он (TDBProgress) используется несколько не так, как мне нужно.
Попробую сделать через DbiRegisterCallBack (большое спасибо Zacho).
Но если кто знает, как можно с использованием RxLib - подскажите плиз - нужно просто вывести прогрес выполнения запроса.
← →
ki11er (2003-09-19 13:48) [16]С колбэком тоже что-то ничего не выходит ;-(
Кто-нибудь может кинуть реально работающий пример?
Спасибо.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c