Re[9]: IB & быстрая вставка записей по TTimer
От: mrhru Россия  
Дата: 26.11.03 03:55
Оценка:
Здравствуйте, solon, Вы писали:

M>>Другой способ получения уведомлений — компонент TIBEvent. С его помощью регистрируем на сервере события, в которых заинтересованы.

M>>На самом сервере в триггерах при наступлении события выполняем POST_EVENT <строка>. TIBEvent получает его и делаем refresh.
M>>При этом не надо постоянно опрашивать сервер, но сама работа с events — требует аккуратности.

S>1.Правильно ли я Вас понял, что для второго случая с TIBEvent,

S>что когда вcтавляются новые записи с помощью триггера, последней строкой в триггере
S>должно быть POST_EVENT <строка>. Тоесть как увязывается воедино:
S> выполнение запроса на вставку новой записи на сервере
S> и посылка события POST_EVENT <строка> вставки новой записи с сервера?

Перефразирую (чтобы мне было понятнее )
В любом месте на сервере — в триггерах или хранимых процедурах — можно вызвать
POST_EVENT <строка>;
При этом, ПОСЛЕ коммита транзакции, в которой этот триггер или ХП работала,
к клиенту уйдёт событие <строка>, если клиент заранее (т.е. до начала транзакции) на
это событие (<строка>) подписался. И будут приходить, пока клиент не отпишется от событий.
Такой, вкратце, механизм событий.

Следовательно, для получения извещений о новых записях, следует:
— на таблице создать триггер before_ или after_insert или использовать существующий
— добавить в него
POST_EVENT <строка>;
например
POST_EVENT 'NewRow';
— в IBEvents, в свойстве Events добавить строку NewRow
— установить AutoRegister или Registered по потребностям
— написать обработчик для события IBEvents.OnEventAlert, который как раз и будет вызываться по приходу события.

S>2. Я не могу понять как работает в Делфях пример IBXEvents:

S> открываю базу events.gdb,генерирую событие MyEvent, но две последние
S> кнопки не работают: Event Registation и Event Received ???
S> Тоесть в листбокс ничего не вижу???

В Event Registation надо добавить строку "MyEvent" и зарегистрировать.
Можно добавить сразу несколько:
aaa
bbb
ccc

После этого, вводим в Event какое-либо из зарегистрированных, нажимаем Generate Event и получаем его в Event Received.
Послав незарегистрированное, в Event Received ничего и не получим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.