![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Автоматическое обновление грида. [D7, MySQL]
Новенький © (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.
В-общем, либо забей на это, либо делай трехзвенку.