Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

ADO Events   Найти похожие ветки 

 
Vir ©   (2006-07-28 13:43) [0]

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


 
stone ©   (2006-07-28 13:46) [1]


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

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


 
Ega23 ©   (2006-07-28 13:47) [2]

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


 
Sergey13 ©   (2006-07-28 13:49) [3]

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


 
Vir ©   (2006-07-28 13:50) [4]

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


 
Vir ©   (2006-07-28 13:52) [5]

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


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

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

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


 
Megabyte ©   (2006-07-28 13:56) [7]


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

%)))


 
Vir ©   (2006-07-28 13:59) [8]

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


 
Sergey13 ©   (2006-07-28 14:11) [9]

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

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

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


 
Stanislav ©   (2006-07-28 14:17) [10]

В AdoQuery.AfterPost ?


 
Vir ©   (2006-07-28 14:19) [11]


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

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

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


 
Ega23 ©   (2006-07-28 14:20) [12]

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

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


 
Vir ©   (2006-07-28 14:27) [13]


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

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


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

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


 
Vir ©   (2006-07-28 14:36) [15]

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


 
sniknik ©   (2006-07-28 14:39) [16]

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

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


 
Sergey13 ©   (2006-07-28 14:40) [17]

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

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


 
Ega23 ©   (2006-07-28 14:42) [18]

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

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



Страницы: 1 вся ветка

Текущий архив: 2006.10.01;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
6-1147288174
Dstr
2006-05-10 23:09
2006.10.01
Перечисление IP


2-1157967728
Chuk & Gek
2006-09-11 13:42
2006.10.01
Sockets


3-1154037201
Адиль
2006-07-28 01:53
2006.10.01
Нереляционные базы данных


3-1152986150
Silver...
2006-07-15 21:55
2006.10.01
DataSet.Locate не дружит с Filter, а надо - как быть


2-1158236112
Crazy monkey
2006-09-14 16:15
2006.10.01
Можно ли в Listbox вставить картинку?