Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.008 c
8-27616
konstantinov
2003-06-04 02:01
2003.10.09
Анимация мимики человеческой речи


3-27333
Andriy Tysh
2003-09-20 12:21
2003.10.09
Имя колонки в ДБГриде и её номер


3-27404
Вероника
2003-09-18 07:42
2003.10.09
FireBird даёт ошибку. Неделю назад всё было нормально!


14-27658
heady
2003-09-17 13:45
2003.10.09
вопрос по bat нику можно?


3-27372
Настенька
2003-09-21 13:30
2003.10.09
Привет всем. Помогите!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский