Отображение хода запроса...или дружественность интерфейса
Модератор: kdv
Отображение хода запроса...или дружественность интерфейса
Подскажите как донести пользователю что запрос выполняется? Определить для всекх контролов формы курсор crSQLWait а потом(по окончанию запроса) изменить на дефаулт? Создать поток и зарисовывать на угад ProgressBar? Дописать чё в компонент доступа? А то будет думать что приложениевисит...
Заранее благодарю!
Заранее благодарю!
Ну рюмашку-то в виде курсора изобразить не грех... Как - зависит от среды разработки и потому оффтоп. Имхо достаточно Screen.Cursor менять, а не по контролам шастать. На какой-то древней Дельфе не отрабатывало, если менять его прям в тексте там же, где запрос открывается, а если написать отдельную процедурку и вызывать - отрабатывало. У нас с тех пор так и повелось, как оно щас - не знаю ибо прверять лень.
На 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;
А нельзя както тайком чтобы сторонний модуль или функция работала как то с записями по текужей тарнзакции, анализировала там чёта... что вообще никак нельзя?kdv писал(а):дело вкуса. время выполнения и количество выбираемых записей все равно неизвестно. Кроме того, от момента execute до первого fetch вообще даже о количестве речи идти не может.
Поэтому "дописать в компоненты" некуда и нечего.
-
- Сообщения: 250
- Зарегистрирован: 25 июл 2007, 21:33
Re: Отображение хода запроса...или дружественность интерфейс
А зачем для каждого контрола? Screen.Cursor в защищённом блоке с восстановлением в запомненый курсор, который был до выполнения запрроса...kostyl писал(а):Подскажите как донести пользователю что запрос выполняется? Определить для всекх контролов формы курсор crSQLWait а потом(по окончанию запроса) изменить на дефаулт? Создать поток и зарисовывать на угад ProgressBar? Дописать чё в компонент доступа? А то будет думать что приложениевисит...
Заранее благодарю!
Re: Отображение хода запроса...или дружественность интерфейс
Ну ладно и так можно... А вот в отдельный поток очень удобно, только не прогресс зарисовывать, а статус с надписью "Идет запрос."Kotъ-Begemotъ писал(а):А зачем для каждого контрола? Screen.Cursor в защищённом блоке с восстановлением в запомненый курсор, который был до выполнения запрроса...
"Идет запрос..." "Идет запрос." и т.д.
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Дык, тово учитесь писать правильные запросы. Оптимизатор он штук хитрый, с ним умеючи надо. Вот буквально давеча очередной перл пишуkostyl писал(а):Эх, если бы все запросы были по 10 секунд....Attid писал(а): если запрос которым он пользуется часто висит больше 10 секунд, то что-то не так с запросом.
"а джойн б лефт джойн в" тормоза на ровном месте, в плане натурал, перебор начат с таблицы б, что совсем не айс...
"а лефт джойн б лефт джойн в" все ОК, убираю лефт план опять изувечен, как бог черепаху.
Вобщем основное пожелание не на то, как юзера заставить ждать молча, а как сделать так чтоб он не ждал. Американцы с постройкой небоскребов столкнулись с проблемой скоростных лифтов, решили тем что понавесили зеркал, лифты сразу стали "быстрее", но таки до определенного предела. Лучше терпение юзера слишком не испытывать.