Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.09.2009, 10:05
neo7777 neo7777 вне форума
Прохожий
 
Регистрация: 27.02.2008
Сообщения: 12
Репутация: 10
По умолчанию Проблемы с обновлением записей БД

Есть база данных на MS SQL.
В примере на Delphi доступ к базе осуществляется через компоненты: ADOConnection, ADOQuery, DataSource, DBGrid, DBNavigator.
Всё работает! Доступ к базе есть, создавать и удалять записи получается отлично!
Но не могу понять, что нужно сделать, чтобы, когда запускалось два клиента работающих с базой одновременно, при изменении базы в одном клиенте, отображались изменения в другом.
А так получается, пока клиент не перезапустишь, он не видит изменения, которые сделали другие клиенты.
Ответить с цитированием
  #2  
Старый 23.09.2009, 11:02
Аватар для GrenLES
GrenLES GrenLES вне форума
Новичок
 
Регистрация: 12.05.2009
Сообщения: 51
Репутация: 13
По умолчанию

Я не знаю, но чисто по логике могу высказаться

1. Можно с некой переодичностью перечитывать базу.

2. Можно поставить где-то флаг. Типа "таблица - изменено - дата"
и из проги читать и сравнивать текущее время и что изменилось. Если совпало - перечитывай все.

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

4. Либо слать уведомления - "обновись"
Ответить с цитированием
  #3  
Старый 23.09.2009, 12:40
neo7777 neo7777 вне форума
Прохожий
 
Регистрация: 27.02.2008
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от GrenLES
4. Либо слать уведомления - "обновись"

это хороший вариант. спасибо.
вот варианты реализации уже насоветовали на других форумах:
1. Я каждому клиенту прицепил простой месенджер UDP. При изменении мною данных всем рассылается сообщение мол обновится, и фильтр, по которому можно получить вновь внесенные данные.
Клиенты в свои гриды дописывают набор по этому фильтру и улыбаются
2. Начиная с 2005 появилась фишка как уведомление об обновлении данных. http://msdn.microsoft.com/ru-ru/libr...0(SQL.90).aspx

если не разберусь со вторым, реализую первое. у меня как раз все клиенты связанны по tcp/ip
Ответить с цитированием
  #4  
Старый 23.09.2009, 13:16
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

В drkb (вроде) есть пример как из MS SQL рассылать сообщения по UDP.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 24.09.2009, 08:38
neo7777 neo7777 вне форума
Прохожий
 
Регистрация: 27.02.2008
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
В drkb (вроде) есть пример как из MS SQL рассылать сообщения по UDP.

спасибо за совет. нашёл в DRKB "Как получить обновление данных, по событию, а не таймером", но всё же воспользуюсь вариантом когда сам клиент оповещает других клиентов об изменении в базе с соответсвующим фильтром по TCP/IP. Так надёжнее и больше возможностей контролировать процесс передачи сообщений...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:39.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter