Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADO Events [D7]


Vir ©   (2006-07-28 13:43:00) 

Есть ли в механизм мониринга изменений в базе при работе через ADO?
Т.е. хотелось бы после добавления данных внешнем пользователем производить некоторые операции над базой.


Ega23   (2006-07-28 14:42:00) [1]

вот представь: ты сидишь за клиентом, у тебя грид с набором данных. Данных - 2000 записей. Ты начинаешь его просматривать (просто просматривать!). И тут, вдруг, начинается обновление.

Я бы за такое убил. И не важно, как оно реализовано: через event'ы с сервера или через пинг обновлений.


Sergey13   (2006-07-28 14:40:00) [2]

> [15] Vir ©   (28.07.06 14:36)

Так именно сервер этим и может заниматься, а драйвер это просто учитывает.


sniknik   (2006-07-28 14:39:00) [3]

> При этом програмная часть преписываться не должна достаточно изменить
> строку подключения в файле настройки (чем кстати меня очень радует работа через ADO).
мечтатель... ;о))

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


Vir   (2006-07-28 14:36:00) [4]

InterBase конечно это сервер.
Но речь идет о драйвере через который подключаеться Delphi.


Sergey13   (2006-07-28 14:33:00) [5]

> [13] Vir ©   (28.07.06 14:27)
> Просто я надаялся что попбный межанизм реализован в драйверах.
> Есть же такое в InterBase.
По твоему InterBase это драйвер? Ты заблуждаешься.


Vir   (2006-07-28 14:27:00) [6]


> А в большинстве случаев - это изврат.

Именно - изврат и загруз самой базы на постоянной цикличное выполнение SQL запросов для отслеживания изменений.  Сделать не сложно и таким образом, но это неприятное решение. Просто я надаялся что попбный межанизм реализован в драйверах. Есть же такое в InterBase.
Если уж про пингующий поток то можно немного щадяще сделать - в ADO есть механизм получения метаданных о базе - в часности времени последненего изменения таблиц. Через него можно понять что туда что-то записалось.


Ega23   (2006-07-28 14:20:00) [7]

Оповещение:
при изменении данных (добавлении, удалении) пишется запись в табличку, мол данные обновились. Причём - сколько клиентов, столько и записей.
Каждый клиент имеет поток, который пингует эту табличку. Если нашёл что-то для себя - обновил свой набор данных и вытер эту запись.

З.Ы. Это изврат. точнее, не изврат, а реально действующая система. Но система весьма специфична.
А в большинстве случаев - это изврат.


Vir   (2006-07-28 14:19:00) [8]


> А если серьезно, то как же ты пишешь и не знаешь в какую
> БД? Чудеса.

Нет не чудеса - просто сейчас это Jet (Access). А когда она выростит это будет MSSQL или MySQL. При этом програмная часть преписываться не должна достаточно изменить строку подключения в файле настройки (чем кстати меня очень радует работа через ADO).

А повещать зачем: есть драйвер устройства который его мониторит, и считывает данные когда они там появляються складывая их в базу.
И есть n клиентских рабочих мест. У которых будет доступ к этой базе им нужно знать, что появились новые данные и их можно "посмотреть".


Stanislav   (2006-07-28 14:17:00) [9]

В AdoQuery.AfterPost ?


Sergey13   (2006-07-28 14:11:00) [10]

> [8] Vir ©   (28.07.06 13:59)
> Ага а записи вести не в базе а в бортовом журнале :)

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

А если серьезно, то как же ты пишешь и не знаешь в какую БД? Чудеса.
И зачем оповещать других, если не секрет?


Vir   (2006-07-28 13:59:00) [11]

Ага а записи вести не в базе а в бортовом журнале :)


Megabyte   (2006-07-28 13:56:00) [12]


> Предалагаю оповещать флажками, как на флоте, с дублированием
> по громкой связи во время тумана. 8-)

%)))


Sergey13   (2006-07-28 13:55:00) [13]

2 [4] Vir ©   (28.07.06 13:50)
> Т.е. после того как одни клиент добавил запись - других
> нужно оповестить.

Предалагаю оповещать флажками, как на флоте, с дублированием по громкой связи во время тумана. 8-)


Vir   (2006-07-28 13:52:00) [14]

Проблема в том что движок базы неизвестен (он может меняться от версии к версии) но всегда будет работать через ADO.


Vir   (2006-07-28 13:50:00) [15]

Это нужно чтобы поповещать других клиентов.
Т.е. после того как одни клиент добавил запись - других нужно оповестить.


Sergey13   (2006-07-28 13:49:00) [16]

2 [1] stone ©   (28.07.06 13:46)
> Для начала неплохо расшифровать слово некоторые
А я бы начал с расшифровки слова "база". 8-)


Ega23   (2006-07-28 13:47:00) [17]

Над базой, или над клиентом?
Если над базой, то выполняй добавление данных через SP, в ней же и организуй всю пост-добавленную логику.
А вот обновлять данные на клиенте без ведома опреатора, это, ИМХО, нехорошо.


stone   (2006-07-28 13:46:00) [18]


> Т.е. хотелось бы после добавления данных внешнем пользователем
> производить некоторые операции над базой.

Для начала неплохо расшифровать слово некоторые, а также разграничить серверные и клиентские операции.


Наверх

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