Страница 1 из 1
Отображение хода запроса...или дружественность интерфейса
Добавлено: 03 мар 2008, 13:40
kostyl
Подскажите как донести пользователю что запрос выполняется? Определить для всекх контролов формы курсор crSQLWait а потом(по окончанию запроса) изменить на дефаулт? Создать поток и зарисовывать на угад ProgressBar? Дописать чё в компонент доступа? А то будет думать что приложениевисит...
Заранее благодарю!
Добавлено: 03 мар 2008, 15:21
kdv
дело вкуса. время выполнения и количество выбираемых записей все равно неизвестно. Кроме того, от момента execute до первого fetch вообще даже о количестве речи идти не может.
Поэтому "дописать в компоненты" некуда и нечего.
Добавлено: 03 мар 2008, 18:02
Merlin
Ну рюмашку-то в виде курсора изобразить не грех... Как - зависит от среды разработки и потому оффтоп. Имхо достаточно Screen.Cursor менять, а не по контролам шастать. На какой-то древней Дельфе не отрабатывало, если менять его прям в тексте там же, где запрос открывается, а если написать отдельную процедурку и вызывать - отрабатывало. У нас с тех пор так и повелось, как оно щас - не знаю ибо прверять лень.
Добавлено: 04 мар 2008, 11:20
kostyl
На Delphi 7 всё работает так например:
Код: Выделить всё
procedure StartSql;
var I:integer;
begin
for i:=0 to form1.ControlCount-1 do
Form1.Controls[i].Cursor:=crSQLWait;
Form1.Cursor:=crSQLWait;
Application.ProcessMessages;
end;
Добавлено: 04 мар 2008, 15:54
kostyl
kdv писал(а):дело вкуса. время выполнения и количество выбираемых записей все равно неизвестно. Кроме того, от момента execute до первого fetch вообще даже о количестве речи идти не может.
Поэтому "дописать в компоненты" некуда и нечего.
А нельзя както тайком чтобы сторонний модуль или функция работала как то с записями по текужей тарнзакции, анализировала там чёта... что вообще никак нельзя?
Добавлено: 04 мар 2008, 16:04
Attid
сказали же что нет =)
а вообще пользователя не надо напрягать ждать, если запрос которым он пользуется часто висит больше 10 секунд, то что-то не так с запросом.
хотя меня и за 5 секунд пинают сразу =)
Добавлено: 04 мар 2008, 16:29
kostyl
Attid писал(а): если запрос которым он пользуется часто висит больше 10 секунд, то что-то не так с запросом.
Эх, если бы все запросы были по 10 секунд....
Re: Отображение хода запроса...или дружественность интерфейс
Добавлено: 05 мар 2008, 20:02
Kotъ-Begemotъ
kostyl писал(а):Подскажите как донести пользователю что запрос выполняется? Определить для всекх контролов формы курсор crSQLWait а потом(по окончанию запроса) изменить на дефаулт? Создать поток и зарисовывать на угад ProgressBar? Дописать чё в компонент доступа? А то будет думать что приложениевисит...
Заранее благодарю!
А зачем для каждого контрола? Screen.Cursor в защищённом блоке с восстановлением в запомненый курсор, который был до выполнения запрроса...
Re: Отображение хода запроса...или дружественность интерфейс
Добавлено: 06 мар 2008, 09:05
kostyl
Kotъ-Begemotъ писал(а):А зачем для каждого контрола? Screen.Cursor в защищённом блоке с восстановлением в запомненый курсор, который был до выполнения запрроса...
Ну ладно и так можно... А вот в отдельный поток очень удобно, только не прогресс зарисовывать, а статус с надписью "Идет запрос."
"Идет запрос..." "Идет запрос." и т.д.
Добавлено: 14 мар 2008, 13:04
Ivan_Pisarevsky
kostyl писал(а):Attid писал(а): если запрос которым он пользуется часто висит больше 10 секунд, то что-то не так с запросом.
Эх, если бы все запросы были по 10 секунд....
Дык, тово учитесь писать правильные запросы.

Оптимизатор он штук хитрый, с ним умеючи надо. Вот буквально давеча очередной перл пишу
"а джойн б лефт джойн в" тормоза на ровном месте, в плане натурал, перебор начат с таблицы б, что совсем не айс...
"а лефт джойн б лефт джойн в" все ОК, убираю лефт план опять изувечен, как бог черепаху.

Вобщем основное пожелание не на то, как юзера заставить ждать молча, а как сделать так чтоб он не ждал. Американцы с постройкой небоскребов столкнулись с проблемой скоростных лифтов, решили тем что понавесили зеркал, лифты сразу стали "быстрее", но таки до определенного предела. Лучше терпение юзера слишком не испытывать.

Добавлено: 14 мар 2008, 13:32
kostyl
Ivan_Pisarevsky писал(а): ....
Да волею-неволею приходиться ему ждать когдо он с блобами работает. От таки блины...