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

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

Автоматическое обновление грида. [D7, MySQL]


Страницы:   1 2

Новенький ©   (2003-08-21 09:47:00) 

Я заранее извиняюсь за ламерский вопрос, но раньше имел дело только с локальными базами и одним юзером.
А задача стоит такая - есть база на MySQL. С базой будут работать 3 человека по локалке. Интерфейс с базой - самописная программа (я ее сейчас и пишу), в которой в качестве Грида - EhLib, в качестве DataSet - MyDAC.
Скажем юзер А изменил какую-то запись. Как сделать, чтобы в Гридах юзеров B и C эта запись также автоматически (причем быстро) обновилась? То есть, чтобы юзеры B и C увидели, что внесены изменения сами ничего дополнительно не нажимая.

Копания в конфе, в доках пока ничего не дали. Есть мысли, как это можно устроить через "одно место", но, мне кажется, должны же быть штатные средства для этого в самом гриде или DataSet, или еще где?

Прошу помощи, господа!


Новенький   (2003-08-21 10:10:00) [21]

to Sergey13:
В моем случае - надо. Работа идет с заказами, поэтому менеджеры должны иметь всегда перед глазами адекватную ситуации информацию.
Причем, они сидят в разных комнатах и орать при этом "Ребята, нажмите Релоад!" - глупо. :(

Видимо, пока остается именно проверять по таймеру.
Пока придумал такой алгоритм - при изменении в базе оставляется метка - такой-то юзер изменил такую-то запись.
Раз в секунду приложение ищет такую метку и, если метка оставлена приложением другого юзера, производится обновление. Метка обнуляется.

Если есть другие алгоритмы, буду рад послушать!


Sergey13   (2003-08-21 09:58:00) [22]

Даже лень писать об этом. 8-) Попробуй поиском на твой вопрос посмотреть. Кратко - не надо этого делать - пусть юзера если надо сами обновляют.


DenK_vrtz   (2003-08-21 09:55:00) [23]

>Как сделать, чтобы в Гридах юзеров B и C эта запись также автоматически (причем быстро) обновилась? То есть, чтобы юзеры B и C увидели, что внесены изменения сами ничего дополнительно не нажимая.

Чтобы что-то изменить надо перезапросить данные. Штатные средтва DataSet - Refresh, Close, Open. По каким признакам данные перезапрашивать - тут область фантазии безгранична!


Ann   (2003-08-21 09:55:00) [24]

можно конечно сделать обновление по таймеру.. но это будет тормозить работу... может кто что лучше посоветует..


Nikolay M.   (2003-08-21 09:54:00) [25]


> должны же быть штатные средства для этого в самом гриде
> или DataSet, или еще где?

Нет, не должны.


> Копания в конфе, в доках пока ничего не дали

Плохо копал. Вопрос (и пара вариантов ответов) избитый.

Не предлагая вариант с обновлением всего DataSet-а по таймеру, скажу, что более-менее "прямо" это реализуется в трехзвенке, особенно под MySQL - там ни на триггеры не повеситься, ни ексепшн вызвать... Как осуществлять обратные вызовы от сервера приложений к клиенту, читай статью Романа Игнатьева на rsdn.
В-общем, либо забей на это, либо делай трехзвенку.


Страницы:   1 2

Наверх

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