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

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

Графическое представление открытия запроса [D7, FireBird1.5]


Страницы:   1 2

vvh ©   (2006-05-06 15:42:00) 

Здравствуйте Мастера!
Как визуально показать ход получения данных с сервера, например с помощью ProgressBar.
Используютcя компоненты FibPlpus


ANB   (2006-05-06 17:09:00) [21]


> сколько из них всего.

= сколько их всего.


Sergey Masloff   (2006-05-06 17:08:00) [22]

Да мультяшку просто показывать да и все.


ANB   (2006-05-06 17:08:00) [23]


> vvh   (06.05.06 16:34) [8]

Но не понимаешь граблей.
Грабля первая : компоненты доступа к ФБ не умеют фетчить записи кусочками, т.е. до конца выборки данных ты не знаешь, сколько из них приехало.
Грабля вторая : пока все не приедут - ты не узнаешь сколько из них всего.
Грабля третья - собственно передача данных обычно идет очень быстро (если ты выбираешь слишком много данных - то это плохо спроектировано приложение).

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


evvcom   (2006-05-06 16:56:00) [24]

Выбери себе интервал, например, 1 секунда, динамично? И прибавляй по 1% (5%, 10%) в прогресс-баре. Если данные пришли раньше, то прогресс сразу на 100%! Если дошел до 100%, а данных еще нет, то 2 пути: либо прогресс на 0 и сначала, либо начать считать в обратную сторону! :-)))))


vvh   (2006-05-06 16:34:00) [25]


> Конечно, автор вряд-ли понимает разницу, но отобразить именно
> получение данных - как два байта переслать :)

Простите, но я отлично понимаю разницу, поэтому и обратился с вопросом,
и если не трудно, то подскажите, пожалуйста, как это сделать. Спасибо.


Nikolay M.   (2006-05-06 16:11:00) [26]

> Тем, кто утверждает, что невозможно

Читайте вопрос, автору не нужен процесс выполнения запроса, ему нужен процесс получения данных :)
Конечно, автор вряд-ли понимает разницу, но отобразить именно получение данных - как два байта переслать :)


-SeM-   (2006-05-06 16:11:00) [27]

Если только через хранимые процедуры и эвенты... Но оно того стоит?


vvh   (2006-05-06 16:02:00) [28]

А если перед откытием, получить количество записей в таблице:
select COUNT(id_abon) ....
Ну а потом что-то сделать.


Sergey Masloff   (2006-05-06 15:56:00) [29]

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


MsGuns   (2006-05-06 15:55:00) [30]

С помощью прогресбара - никак. А вот если изменить вид курсора (например, вместо crDefault выставить на время выполнения запроса crHourGlass) и в статусной панельке написать чт-то вроде "Чтение (обновление) данных с сервера БД..", то юзеру можно ясно дать понять, что прога вообще-то не висит ;)


vvh   (2006-05-06 15:54:00) [31]

У меня обычный запрос на выборку данных, открываю его:
tAbon.Open;
И вот необходимо что бы процесс получения записей отображался в ProgressBar.


ANB   (2006-05-06 15:45:00) [32]

А как ты узнаешь, сколько будет выполняться запрос ? Он может и на сервере крутится сначала довольно долго, прежде чем начнет присылать данные. А если запрос выполняется быстро - то и такие прибамбасы не нужны.


Страницы:   1 2

Наверх

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