Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

Логично... Вы запросы по каким-нибудь событиям обновляйте.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 23.09.2009, 11:25   #3
neo7777
Пользователь
 
Регистрация: 27.02.2008
Сообщений: 11
По умолчанию

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
Логично... Вы запросы по каким-нибудь событиям обновляйте.
Пожалуйста, можно чуть подробнее.
Вы имеете в виду события компонент работающих с данными?
neo7777 вне форума Ответить с цитированием
Старый 23.09.2009, 11:31   #4
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

обновляйте компонент ADOQuery, тогда пользователи будут видеть внесенные изменения
фЁдОр вне форума Ответить с цитированием
Старый 23.09.2009, 12:01   #5
neo7777
Пользователь
 
Регистрация: 27.02.2008
Сообщений: 11
По умолчанию

Цитата:
Сообщение от фЁдОр Посмотреть сообщение
обновляйте компонент ADOQuery, тогда пользователи будут видеть внесенные изменения
а обновлять по какому событию?
neo7777 вне форума Ответить с цитированием
Старый 23.09.2009, 12:11   #6
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Цитата:
Сообщение от neo7777 Посмотреть сообщение
а обновлять по какому событию?
ну я например закрываю и открываю его. но наверно есть более правильный вариант(может кто еще какие идеи предложит).
ЗЫ: только незабудь делать в таймере обновление данных
фЁдОр вне форума Ответить с цитированием
Старый 23.09.2009, 12:19   #7
neo7777
Пользователь
 
Регистрация: 27.02.2008
Сообщений: 11
По умолчанию

Цитата:
Сообщение от фЁдОр Посмотреть сообщение
ну я например закрываю и открываю его. но наверно есть более правильный вариант(может кто еще какие идеи предложит).
ЗЫ: только незабудь делать в таймере обновление данных
Не, так не пойдёт. Нужно конкретно по событию. Когда данные обновились - только тогда и производить Refresh.

Вообще вот ключ к решению:
http://msdn.microsoft.com/ru-ru/libr...0(SQL.90).aspx
Но пока не могу разобратся как это использовать в Delphi-компонентах.
neo7777 вне форума Ответить с цитированием
Старый 23.09.2009, 12:23   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
отображались изменения в другом
Я каждому клиенту прицепил простой месенджер UDP. При изменении мною данных всем рассылается сообщение мол обновится, и фильтр, по которому можно получить вновь внесенные данные.
Клиенты в свои гриды дописывают набор по этому фильтру и улыбаются
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2009, 12:34   #9
neo7777
Пользователь
 
Регистрация: 27.02.2008
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я каждому клиенту прицепил простой месенджер UDP. При изменении мною данных всем рассылается сообщение мол обновится, и фильтр, по которому можно получить вновь внесенные данные.
Клиенты в свои гриды дописывают набор по этому фильтру и улыбаются
прикольное решение! у меня как раз все клиенты связанны по tcp/ip.
если не найду другое решение, через "Использование уведомлений запросов", то воспользуюсь вашим предложением. Спасибо.
neo7777 вне форума Ответить с цитированием
Старый 23.09.2009, 12:56   #10
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

хм... все зависит от частоты измений данный в бд. если обновление частое, то как-то посылать сообщение, что мол обновитесь ребята мне кажется раздражительно будет, ну а если нечастое изменение, то это даже правильно.
фЁдОр вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы записей Mr.Been Паскаль, Turbo Pascal, PascalABC.NET 0 21.05.2009 21:11
DBRadioGroup,проблема с обновлением Sinker БД в Delphi 8 17.04.2009 10:15
Проблема с обновлением KIS 7 Ronni10 Безопасность, Шифрование 2 07.03.2008 09:40
проблема с динамическим обновлением. Delphi Pang Помощь студентам 5 22.02.2008 11:12