![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]
> Т.е. хотелось бы после добавления данных внешнем пользователем
> производить некоторые операции над базой.
Для начала неплохо расшифровать слово некоторые, а также разграничить серверные и клиентские операции.