![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос и ProgressBar [D5, D6, D7, IB6.x]
Dummes © (2005-06-10 12:49:00)Посоветуйте как ослеживать время выполнения SQL-запросов с отображением в ProgressBar.
Dummes
Sergey13 (2005-06-14 10:57:00) [21]2[17] Dummes (14.06.05 10:35)
Может просто поменьше записей возвращать надо? Может сервак мгновенно отдает, а по сетке долго тянется.
Dummes (2005-06-14 10:53:00) [22]Запросы оптимизированны. Хотелось совершенства.
Всем спасибо.
msguns (2005-06-14 10:51:00) [23]>Sergey13 © (14.06.05 10:46) [21]
>ЗЫ: Надо стараться писАть так, что бы работало быстро, а не показывать как медленно работает.
Дык эта.. Ежели первое-то не выходит, что остается-то ? Правильно - работать над вторым ;)
Sergey13 (2005-06-14 10:46:00) [24]2[17] Dummes (14.06.05 10:35)
А что зависит от точности прорисовки ПрогресБара? Даже если тебе удастся (это вряд ли (с) т. Сухов), то одинаковое количество записей одного и того же запроса может возвращвться за время, отличающееся на прорядки. Смысл то какой в этом?
ЗЫ: Надо стараться писАть так, что бы работало быстро, а не показывать как медленно работает.
msguns (2005-06-14 10:43:00) [25]>Dummes (14.06.05 10:35) [17]
>А если поставить счетчик (FireBIRD) в ХП и через Suspend отслеживать? А перед этим вычислить Count...
А если сотворить на сервере евент, зарегить его в приложении, и по каждому хэпэшному суспенду его зажигать ? Тогда можна.. Только что это будет за сервер и сколько времени будет выполняться каждыйзапрос - это видимо, тема отдельная.
Digitman (2005-06-14 10:40:00) [26]
> через Suspend отслеживать
самый первый Suspend отработает уже после тогокак НД будет сформирован
Anatoly Podgoretsky (2005-06-14 10:37:00) [27]Какой настойчивый парень.
Dummes (2005-06-14 10:35:00) [28]А если поставить счетчик (FireBIRD) в ХП и через Suspend отслеживать? А перед этим вычислить Count...
КиТаЯц (2005-06-14 10:26:00) [29]>msguns © (14.06.05 10:22) [15]
:)))
Я же написал: "Что-то типа..."
msguns (2005-06-14 10:22:00) [30]>КиТаЯц © (14.06.05 10:17) [12]
>SQL.Run;
Screen.cursor:= crDefoult;
Это по-китайски ?
-=XP=- (2005-06-14 10:22:00) [31]Сделать к в NN - бегающий туда-сюда ProgressBar.
Взять приблизительно максимальное время выполнения запроса, например, 5 сек. И "накручивать" ProgressBar от минимума к максимуму в течение этих 5 сек. Для пущей убедительности можете добавить "рывков" и "притормаживаний". Если запрос к этому времени не закончен - начать откручивать PrograssBar назад, от максимума к минимуму. В принципе - ничем не лучше анимации.
Если пользователи на такую уловку поймаются - Вам повезло. Если же не поймаются - ... ;)
Val (2005-06-14 10:19:00) [32]> [12] КиТаЯц © (14.06.05 10:17)
а сам он никак не меняется?
КиТаЯц (2005-06-14 10:17:00) [33]Лично я просто курсор мыши меняю. Что-то типа...
Screen.cursor:= MyCursor;
SQL.Run;
Screen.cursor:= crDefoult;
Anatoly Podgoretsky (2005-06-14 10:16:00) [34]Dummes (14.06.05 10:06) [8]
А ничего не надо предпринимать, поскольку недостижимо.
paul_k (2005-06-14 10:16:00) [35]1. Оптимизировать запрос, чтоб не надо было показывать юзеру сколько сигарет он ещё может выкурить.
2. Оптимизировать структуру БД
3. перейти к пункту 1
Перед началом исполнения запроса начать крутить картинку после его исполнения прекратить оное действие
Digitman (2005-06-14 10:12:00) [36]?
Dummes (2005-06-14 10:06:00) [37]Что еще можно предпринять. Посоветуйте.
Dummes (2005-06-10 13:19:00) [38]Благодарю.
Digitman (2005-06-10 13:15:00) [39]
> Получить Count можно
нельзя.
пока запрос не будет выполнен сервером, нит о каком Count и речи идти не может.
более того, в ряде случаев и после исполнения запроса Count не будет доступен до тех пор пока не сходишь в конец НД
Dummes (2005-06-10 13:11:00) [40]Совсем печально и грусно стало..
Отслеживай начало и конец. Между ними - хоть прогресбар хоть авишку крути - одинаково информативно. 8-)
Получить Count можно, а как к нему «инкрементировать»?