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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2010, 10:10   #1
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию Как увидеть изменения в БД, внесенные другим пользователем?

Здравствуйте. Как увидеть изменения в БД, внесенные другим пользователем? Есть программа, написанная на Delphi, и SQL server, и в программе по таймеру через каждые 10 секунд происходит обновление всех таблиц. Есть ли другие способы?
Сергей089 вне форума Ответить с цитированием
Старый 11.02.2010, 11:32   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Да мне понравился псособ предложенный Stilet c помощью IdUDPServer и IdUDPClient. Попробовал всё работает и не надо никаких таймеров.
Сделал примерно так: На сервере где находится БД положил IdUDPClient и при изменении данных (у меня это был компонент ADOQuery и в событии AfterPost и AfterDelete)просто передавал команду 'refresh'.
в клиенте ставим компонент IdUDPServer и в "обработчике чтения" запускаем процедуру обновления, которая находится у Вас в таймере

Последний раз редактировалось SERG1980; 11.02.2010 в 11:35.
SERG1980 вне форума Ответить с цитированием
Старый 11.02.2010, 11:41   #3
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Цитата:
На сервере где находится БД положил IdUDPClient
А можете описать, как это сделать?
Цитата:
у меня это был компонент ADOQuery
А с ADOTable все также?
Сергей089 вне форума Ответить с цитированием
Старый 11.02.2010, 11:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А можете описать, как это сделать?
На форму кидаешь UDPClient и UDPServer, настраиваешь их.
Далее после того как твоя прога внесет что-то в базу, или отредактирует запись, по UDPClient рассылаешь методом Broadcast строку, содержащую уникальные ключи измененных записей. И пусть UDPServer приняв строку, распарсив ее обновляет (подчитает или перечитает) эти записи, по этим ключам.
Можно даже не заботиться о том что и программе, пославшей уведомление придет сообщение о необходимости перечитывания, ибо

1) Либо в программе прописать переобновление из базы именно в событии принятия сообщения в UDPServer,
2) Либо просто определять откуда пришло сообщение, и если отправитель= получателю ничего не делать

Выбор из этих двух вариантов зависит от выбранных тобой компонентов, и стратегии. Я предпочел бы первый.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.02.2010, 14:40   #5
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Спасибо, сейчас попробую.

Класс! Спасибо!

Последний раз редактировалось Stilet; 12.02.2010 в 15:43.
Сергей089 вне форума Ответить с цитированием
Старый 12.02.2010, 15:45   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Всегда пожалуйста )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как увидеть реляционную структуру SQL? Bendebej SQL, базы данных 5 03.02.2010 15:05
Как увидеть зависимые ячейки bsa785 Microsoft Office Excel 5 02.02.2010 00:09
Как снять с файла признак что он занят другим пользователем Chelentano Microsoft Office Excel 1 12.08.2009 10:56
как програмно увидеть телефонный звонок и номер телефона LiderServis Мультимедиа в Delphi 1 17.01.2009 12:03
Запуск процесса под другим пользователем Андреy Win Api 3 03.12.2008 17:57