|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблемы с обновлением записей БД
Есть база данных на MS SQL.
В примере на Delphi доступ к базе осуществляется через компоненты: ADOConnection, ADOQuery, DataSource, DBGrid, DBNavigator. Всё работает! Доступ к базе есть, создавать и удалять записи получается отлично! Но не могу понять, что нужно сделать, чтобы, когда запускалось два клиента работающих с базой одновременно, при изменении базы в одном клиенте, отображались изменения в другом. А так получается, пока клиент не перезапустишь, он не видит изменения, которые сделали другие клиенты. |
#2
|
||||
|
||||
Я не знаю, но чисто по логике могу высказаться
1. Можно с некой переодичностью перечитывать базу. 2. Можно поставить где-то флаг. Типа "таблица - изменено - дата" и из проги читать и сравнивать текущее время и что изменилось. Если совпало - перечитывай все. 3. Возможно есть какие-то встроенные средства слежения за изменением, но подозреваю, действуют они приблизительно также. - по таймеру что-то проверяют и перечитывают 4. Либо слать уведомления - "обновись" |
#3
|
|||
|
|||
Цитата:
это хороший вариант. спасибо. вот варианты реализации уже насоветовали на других форумах: 1. Я каждому клиенту прицепил простой месенджер UDP. При изменении мною данных всем рассылается сообщение мол обновится, и фильтр, по которому можно получить вновь внесенные данные. Клиенты в свои гриды дописывают набор по этому фильтру и улыбаются 2. Начиная с 2005 появилась фишка как уведомление об обновлении данных. http://msdn.microsoft.com/ru-ru/libr...0(SQL.90).aspx если не разберусь со вторым, реализую первое. у меня как раз все клиенты связанны по tcp/ip |
#4
|
||||
|
||||
В drkb (вроде) есть пример как из MS SQL рассылать сообщения по UDP.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#5
|
|||
|
|||
Цитата:
спасибо за совет. нашёл в DRKB "Как получить обновление данных, по событию, а не таймером", но всё же воспользуюсь вариантом когда сам клиент оповещает других клиентов об изменении в базе с соответсвующим фильтром по TCP/IP. Так надёжнее и больше возможностей контролировать процесс передачи сообщений... |