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, или еще где?

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


MsGuns   (2003-08-22 13:31:00) [1]

>Игорь Ч © (22.08.03 12:03) [24]
> (ладно согласен, решение скользкое)

Еще бы ! С галкой-то и шефом впридачу


Игорь Ч   (2003-08-22 12:03:00) [2]

Уже досталось :) кому-то не понравился вариант с таблицой юзеров :))) (ладно согласен, решение скользкое)


Sergey13   (2003-08-22 11:59:00) [3]

2Игорь Ч © (22.08.03 11:54) [22]
>Грубый все-таки программисты народ
Но справедливый. Щас и тебе на орехи достанется. 8-)


Игорь Ч   (2003-08-22 11:54:00) [4]

Грубый все-таки программисты народ. Лучше бы новенький сказал насколько объемная база, да количество юзеров, может там вообще 100 записей на 3 человека, тогда пущай себе обновляет по таймеру и без всякой головной боли.


VAleksey   (2003-08-22 11:53:00) [5]

Нет, ну что вы господа ! О чем речь, будет автоматическое обновление ... по кнопке на панели инструментов.


> Новенький (21.08.03 12:11) [12]

1) Ему это нужно. А не читал в основной, многие спрашивают как уменьшить размер ПУСТОГО приложения. Это им нужно?! Да, поскольку ты новенький, то можешь и просто не понимать, что это тебе НЕ нужно и почему не нужно, а также почему это просто НЕВОЗМОЖНО сделать. А для объяснения этих причин нужно прочитать толстые книги по теории БД и не только.
2) Насчет постановки вопроса. Ты думаешь мы тут все чем занимаемся? И твоя задача наверняка решалась местными обитателями не раз.
PS
Просьба не воспринимать это как "наезд", а прочитать и разобраться.


Danilka   (2003-08-22 11:46:00) [6]

dez © (22.08.03 11:38)
сделать галку можна. но не советую ее делать на рабочем столе - может войти шеф и будут неприятности.
лучше вечером, дома.
да и не галку лучше а наташку.


dez   (2003-08-22 11:38:00) [7]

а еще можно сделать галку "обновлять аффтоматически" и если юзер ее врубит, то нехай обновляет. потом он поймет, что ето лажа и вырубит ;)


Danilka   (2003-08-22 10:51:00) [8]

Старые войны очередного Новенького со всем остальным миром об одном и том-же.
Надо одну подобную ветку сохранить где-нибудь и всем давать ссылку на нее.


Mixa4   (2003-08-22 10:34:00) [9]

2Новенький
просто когда некий "новенький" задает "избитый" вопрос про "Автоматическое обновление грида", в 9 из 10 случаев ему это не необходимо и лучший для него выход оказывается повесить обновление на кнопку, что тебе и посоветовали умные люди. И ты пока не обосновал необходимость автоматического обновления, я так подозреваю что тебе просто юзер так задачу поставил - нужно чтоб автоматически... Ну так на то он и юзер...
Ну а если просто "нужно" - ищи сам, инфы действительно полно, как-то, знаешь ли, не хочется рассказывать человеку то, что потом наверняка окажется ему нафиг ненужным!


Nikolay M.   (2003-08-22 10:09:00) [10]


> Sergey13 © (22.08.03 09:27) [15]
> 2Игорь Ч © (22.08.03 09:19) [14]
> >Если хоть один флажок есть - обновить таблицу.
> А на фига. Юзер №1 изменил запись с ID=1 а юзер №2 смотрит
> на запись с ID=4596745324. Нафига ему обновляться?

Не говоря уже о накладных расходах установки/снятия флажка и негарантированности чтения/записи за 5 и 7 секунд соответственно. Имхо, можно попробовать свой протокол обмена с сервером создать на основе UDP. Когда при изменении записей остальным клиентам передаются только изменения, потому что рефрешить все данные - это самоубийство.


Sergey13   (2003-08-22 09:27:00) [11]

2Игорь Ч © (22.08.03 09:19) [14]
>Если хоть один флажок есть - обновить таблицу.
А на фига. Юзер №1 изменил запись с ID=1 а юзер №2 смотрит на запись с ID=4596745324. Нафига ему обновляться?


Игорь Ч   (2003-08-22 09:19:00) [12]

Можно ссылки на измененные записи кидать в отдельную тыбличку, тогда не так напряжно будет ее опрашивать. А я бы вообще сделал табличку юзеров. Юзер, вносящий изменения в базу, ставит флажок напротив себя. А через 7 секунд снимает его. Остальные юзера раз в 5 секунд опрашивают таблицу. Если хоть один флажок есть - обновить таблицу.


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

2Новенький (21.08.03 12:11) [12]
>Стебаться может каждый,
Я стебаюсь (или стеблюсь 8-)? Да ни в жисть.

> но если человек (то есть я) сказал, что это ему нужно, вероятно, это вполне может быть так, не правда ли?

Может быть, а может и не быть. Бывает человек плохо знает свою СУБД и хочет поэтому ее поменять. А это неверно. Вот например - у тебя в качестве СУБД MySQL. Почему? Она уже есть или ты просто выбрал ее для новой разработки. Если второе, то ИМХО выбор не совсем удачен, т.к. в MySQL нет многих полезных штучек типа тригеров/ХП. А для учетной задачи - это незаменимая весчь.

>Я ведь описал общую постановку вопроса, на самом деле взаимодействие менеджеров и заказов между собой значительно сложнее, и я не думаю, что кому-то здесь интересно насколько.

Ну дык опиши полнее. Может и ответы будут конкретнее. А то "работа с заказами". Да тут 9 из 10 с ними работа(ют/ли). Может ты с заказами на убийство работаешь, тогда конечно... 8-)

>Тем более, что сказав про обновление раз в секунду, я имел ввиду просто некий квант времени, зависящий от многих факторов и, кто знает, может быть и от положения звезд на небе. :)

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

>Что касается поиска - я не тот человек
>Если подскажешь по каким словам можно найти в этой конфе "имеющиеся каждую неделю такие вопросы" - буду несказанно благодарен.

Ну например на слово "обновление" поиск выдал штук 15 веток и примерно половина из которых "ПРО ЭТО". И это я так понимаю без поиска в архиве.
Так что
"Ищущий, да обрящет" (с) не моё.


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

to Zelius:
Кстати, хорошая идея, спасибо.

to Sergey13:
Стебаться может каждый, но если человек (то есть я) сказал, что это ему нужно, вероятно, это вполне может быть так, не правда ли?
Я ведь описал общую постановку вопроса, на самом деле взаимодействие менеджеров и заказов между собой значительно сложнее, и я не думаю, что кому-то здесь интересно насколько.
Тем более, что сказав про обновление раз в секунду, я имел ввиду просто некий квант времени, зависящий от многих факторов и, кто знает, может быть и от положения звезд на небе. :)
Что касается поиска - я не тот человек, который сначала задает вопросы в конфе, а потом начинает думать. Искал, и не только в конфе, но и в Сети вообще, но вполне может быть, что так как не совсем владею пока терминологией в этой области, задавал не те ключевые слова.
Если подскажешь по каким словам можно найти в этой конфе "имеющиеся каждую неделю такие вопросы" - буду несказанно благодарен.


Zelius   (2003-08-21 11:48:00) [15]

Можно еще связать все компы по сетевому протоколу, MailSlots или UDP. Тогда комп сделавший заказ посылает сообщение в сеть, другие его ловят и обновляют данные.


Vlad   (2003-08-21 10:36:00) [16]

Я делал нечто подобное. Только Query создавал в отдельном потоке, где собссно его и рефрешил раз в N секунд, а N - выносил в настройку пользователя.


Sergey13   (2003-08-21 10:26:00) [17]

2Новенький (21.08.03 10:10) [5]
>В моем случае - надо.
Это только кажется. 8-)

>Работа идет с заказами
Оригинально. !!! Это неизведанная область применения БД. 8-)
И что, они работают все сразу с одним и тем же заказом? Или все таки с разными?

>, поэтому менеджеры должны иметь всегда перед глазами адекватную ситуации информацию.
Которая меняется прамо таки ежесекундно? Не парь. Трое столько не наработают.

>Причем, они сидят в разных комнатах и орать при этом "Ребята, нажмите Релоад!" - глупо. :(
Ну поставь лампочки с кнопками 8-)

>Видимо, пока остается именно проверять по таймеру.
Это самый "дубовый" метод. Который от работы ВООБЩЕ ни как не зависит.

>Если есть другие алгоритмы, буду рад послушать!
Да дофига их, поковыряй поиском. Каждую неделю этот вопрос.


DenK_vrtz   (2003-08-21 10:23:00) [18]

Новенький (21.08.03 10:10),
>Причем, они сидят в разных комнатах и орать при этом "Ребята, нажмите Релоад!"

И не зачем так орать! :-) (Это из Виннипуха)
Самовольное обновление - это не есть гуд! Ты сам подумай. Работаешь ты с чем то, тут бац, винда начинает перезанружаться сам посылая тебя и всю твою работу далеко далеко.
Перезагрузилась. Ты вроде опять за работу, а она, хлоп, и опять перезагружаться. Подумай!
Задача может решиться обменами между пользователями элементарным сообщениями об изменениях.


Nikolay M.   (2003-08-21 10:18:00) [19]


> Видимо, пока остается именно проверять по таймеру.

О-ооо.. Флаг тебе в руки. Надеюсь, менеджеры и админы сетки тебя убьют не сразу, а дадут помучиться, пока ты будешь рефрешить "раз в секунду" ВСЕ(!) заказы...


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

Nikolay M. © (21.08.03 09:54) [1]


Ann   (2003-08-21 10:17:00) [20]


> Новенький (21.08.03 10:10) [5]

тормозить система будет.. а пусть принимая новый заказ менеджер и нажимает кнопочку "обновить" :) все таки не раз в секунду обращение к базе за обновлениями..


Страницы:   1 2

Наверх

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