Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.013 c
15-1157862068
так себе
2006-09-10 08:21
2006.10.01
С Днем танкиста! А есть ли среди нас танкисты?


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


2-1157969374
Alex_KV
2006-09-11 14:09
2006.10.01
Про SetLength


2-1157974252
newbie2
2006-09-11 15:30
2006.10.01
Почему is не работает?


2-1158216030
абабаба
2006-09-14 10:40
2006.10.01
скопировать строку в массив





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский