Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.03;
Скачать: CL | DM;

Вниз

Как автоматически освежать запрос?   Найти похожие ветки 

 
Sergey13 ©   (2003-06-06 11:50) [40]

2YuraKiller © (06.06.03 02:19)
Ты будешь смеяться, но это опять я. 8-)
>Вроде всё круто.. И журнал есть, и трафик не гружоный.
Ну это пока... Но я не об этом.
Ты пока не ответил мне на один вопрос - ЗАЧЕМ ЭТО ВСЕ?
ИМХО, ты решаешь проблему которую сам себе придумал. Так ли интересно операторам видеть эти новые записи?
Предлагаю такое решение.
Оставь свои запросы на количество новых строк по таймеру, но не обновляй рабочий запрос а выводи результат первого в лейблу на форме (типа "Со времени последнего обновления было вставлено ...") и рядом кнопочку - "освежить?". И потом проанализируй количество нажатий на эту кнопку (какой нито лог организуй). Но не сразу, а через месяц, когда юзеры привыкнут к программе. Вот если количество нажатий будет сопоставимо с автоматическим тогда да включай автомат, а так...
Иначе представь - тетя Маша отпросилась на полдня, но прогу погасить забыла - а сервак добросовестно ей данные обновляет 12 раз в час.


 
bushmen ©   (2003-06-06 12:00) [41]

To elected ©:
Если можно, мне тоже вышли исходник, пожалуйста, передачи-приёма.


 
Sandman25 ©   (2003-06-06 12:24) [42]

>Иначе представь - тетя Маша отпросилась на полдня, но прогу погасить забыла - а сервак добросовестно ей данные обновляет 12 раз в час.

Можно поставить таймер с Interval = 1000*60*60 и в OnKeyPress (и OnMouseDown) сбрасывать его и включать заново. Если за час не будет нажата ни одна кнопка, то вызывать Application.Terminate.


 
bushmen ©   (2003-06-06 12:36) [43]

To Sandman25 ©:
Получается, что, когда тетя Маша придёт, то ей одним заходом сразу все 500 записей добавятся, да еще с задержкой на время интервала таймера. Я не вижу ничего криминального в том, чтобы в отсутствии тети Маши шло обновление


 
Oleg_E   (2003-06-06 14:16) [44]

Делали описаный [Sergey13 © (06.06.03 11:50)] метод, и действительно увидели что пользователям (основной массе) "чужие" записи до лампочки, оставили вариант обновления набора по запросу, т.е. пользователь САМ жмет "Обновить" когда считает "нужным", а требование в начале было такое же: "Хотим чтобы ОНО САМО АВТОМАТИЧЕСКИ..."
Прислушайся к совету [Sergey13 © (06.06.03 11:50)]


 
Sandman25 ©   (2003-06-06 15:22) [45]

bushmen © (06.06.03 12:36)

Мне кажется, Вы не поняли моей идеи.

>Я не вижу ничего криминального в том, чтобы в отсутствии тети Маши шло обновление

А я вижу. У нас, например, 50 юзеров сидят. Если каждый из них будет "забывать" выходить из программы, серверу это скорости не прибавит. Зачем обновлять данные, когда их никто не смотрит?


 
bushmen ©   (2003-06-06 15:31) [46]

> Sandman25 ©:
Если пользователь не работает с мышью или клавиатурой, это еще не означает, что он не смотрит на монитор.


 
интересующийся   (2003-06-06 15:32) [47]

elected ©
используешь sockets или MailSlots?




 
Sandman25 ©   (2003-06-06 16:06) [48]

Если пользователь ЧАС смотрит на монитор, то я сомневаюсь, что он смотрит на обновленные данные :)


 
YuraKiller ©   (2003-06-06 22:11) [49]

2 elected © (06.06.03 02:26)
>Таймер это немного неправильно в плане того что он будер рефрешить и без надобности
.. ну и ..
>другие клиенты его ловят и рефреш

Ты прав. Но с идеей опаздал на советов 20.
Спасибо большое Sergey13 (история YuraKiller) после которой я прозрел, понял суть.

Прикиним: недельки через две база будет готова, и.. полным ходом посадят оперов набивать её (база товара и клиентов). Их будет НЕ МЕНЬШЕ 10. 1 юзер за 5 мин. может создать (добавить) ну 5 записей, а таких юзеров минимум 10, и.. в минуту мы имеем: (5/5)*10=10 решрешей в минуту (на каждую машину).

2 Sandman25 ©
Спасибо, мне очень приятно!

2 bushmen ©
Прочитай всё внимательно!!

2 Sergey13 ©
>ЗАЧЕМ ЭТО ВСЕ?
>проблему которую сам себе придумал
Всё это для "тугих юзеров" (см. выще прим. авт.)
Да, проблему я придумал может быть сам, но не зря: я думаю, что визуальный контроль над проделаной работой нужен.

Но .. протупил я. Поспешиш людей н...
Как Вы поняли эта процедура вешается на:
1. Кнопку Refresh (типа "Обновить")
2. На Таймер
3. На процедуры добавления, изменения и т. д. записей (если клиент что-то добавил - ему решреш)

Но.. даже при нажатии на кнопку Refresh (когда надо явно обновить) нету необходимости освежать запрос, если нету ничего нового: вот где ошибка.


mx:=qw["max"]; надо сохранить. И начинать процедуру с того, что надо узнать максимальный (последний) номер.. и сравнить его с прошлым. Если mx1=mx2 то хвост процедуры опускается, т. к. новых записей нет.

Вот общими усилиями приближаемся к истине.

2 YuraKiller
>Вроде всё круто.. И журнал есть, и трафик не гружоный.
Может уже да. И вообще: "Не говори ГОП, пока не перескочил"

P. S.
Теперь если тёта Маша будет выставлятся за День Рождения, то небудет обновления 20 записей всем клиентам, а они (клиенты) просто будут узнавать не пошол ли кто вибивать бутылку водки на ЗП, что-бы это зафиксировать (клиенту новую запись) на голубом екране.



 
YuraKiller ©   (2003-06-06 22:27) [50]

Поле number Primary Key, а поле
date1 индексируемое (полезно, если использовать оператор where для поля).


 
YuraKiller ©   (2003-06-07 22:23) [51]

Да, ответов много :-))

Короче, переработка:

procedure TfMain.cbAllClick(Sender: TObject);
begin
With cbAll do If Checked Then Tag:=0 Else Begin
Tag:=1;
If (DateToStr(Date)=DateToStr(dp.Date)) Then bFresh.Click;
End;
end;

procedure TfMain.dpChange(Sender: TObject); //dp - это TDateTimePicker
begin
dp.Tag:=1;
bFresh.Click;
end;

procedure TfMain.bFreshClick(Sender: TObject);
Var mx: LongInt; ss: String;
begin
mx:=0;
If (DateToStr(Date)=DateToStr(dp.Date)) and (cbAll.Checked) Then Begin
With qw do Begin
SQL.Clear;
SQL.Add("select max(number) from main");
Active:=True;
If qw["max"]<>null Then mx:=qw["max"];
End;
If mx>bFresh.Tag Then Begin
bFresh.Tag:=mx;
mx:=mx-20;
ss:=" and number>="+IntToStr(mx);
End Else ss:="";
End Else ss:="";

If (dp.Tag=1) or (ss<>"") or (cbAll.Tag=1) Then Begin
dp.Tag:=0;
cbAll.Tag:=0;
With qMain do Begin
SQL.Clear;
SQL.Add("select * from main where date1=""+DateToStr(dp.Date)+"""+ss+" order by number descending");
Active:=True;
End;
With Timer1 do Begin
Enabled:=False;
Enabled:=True;
End;
End;
end;


Подскажите, посоветуйте если кому интересно..



Страницы: 1 2 вся ветка

Текущий архив: 2003.07.03;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.015 c
4-7757
STAINER
2003-05-02 01:42
2003.07.03
НЕ МОГУ СОЗДАТЬ COM-ОБЬЕКТ ЧЕРЕЗ CREATECOMOBJECT


14-7596
vajo
2003-06-18 06:14
2003.07.03
Установка Creative Sound Blaster Audigy Live!


1-7387
Delphin
2003-06-22 23:21
2003.07.03
Как минимизировать форму при запуске программы?


11-7372
SPeller
2002-10-10 15:54
2003.07.03
ShowModal


11-7370
Alexander
2002-10-24 13:42
2003.07.03
Можно ли TKOLTrayIcon применять в сервисах?