Здравствуйте, mrhru, Вы писали:
M>Здравствуйте, solon, Вы писали:
M>>>Другой способ получения уведомлений — компонент TIBEvent. С его помощью регистрируем на сервере события, в которых заинтересованы.
M>>>На самом сервере в триггерах при наступлении события выполняем POST_EVENT <строка>. TIBEvent получает его и делаем refresh.
M>>>При этом не надо постоянно опрашивать сервер, но сама работа с events — требует аккуратности.
S>>1.Правильно ли я Вас понял, что для второго случая с TIBEvent,
S>>что когда вcтавляются новые записи с помощью триггера, последней строкой в триггере
S>>должно быть POST_EVENT <строка>. Тоесть как увязывается воедино:
S>> выполнение запроса на вставку новой записи на сервере
S>> и посылка события POST_EVENT <строка> вставки новой записи с сервера?
M>Перефразирую (чтобы мне было понятнее
)
M>В любом месте на сервере — в триггерах или хранимых процедурах — можно вызвать
M>POST_EVENT <строка>;
M>При этом, ПОСЛЕ коммита транзакции, в которой этот триггер или ХП работала,
M>к клиенту уйдёт событие <строка>, если клиент заранее (т.е. до начала транзакции) на
M>это событие (<строка>) подписался. И будут приходить, пока клиент не отпишется от событий.
M>Такой, вкратце, механизм событий.
M>Следовательно, для получения извещений о новых записях, следует:
M>- на таблице создать триггер before_ или after_insert или использовать существующий
M>- добавить в него
M>POST_EVENT <строка>;
M>например
M>POST_EVENT 'NewRow';
M>- в IBEvents, в свойстве Events добавить строку NewRow
M>- установить AutoRegister или Registered по потребностям
M>- написать обработчик для события IBEvents.OnEventAlert, который как раз и будет вызываться по приходу события.
S>>2. Я не могу понять как работает в Делфях пример IBXEvents:
S>> открываю базу events.gdb,генерирую событие MyEvent, но две последние
S>> кнопки не работают: Event Registation и Event Received ???
S>> Тоесть в листбокс ничего не вижу???
M>В Event Registation надо добавить строку "MyEvent" и зарегистрировать.
M>Можно добавить сразу несколько:
M>aaa
M>bbb
M>ccc
M>После этого, вводим в Event какое-либо из зарегистрированных, нажимаем Generate Event и получаем его в Event Received.
M>Послав незарегистрированное, в Event Received ничего и не получим.
Всё Окей. Но у меня опять процессор полсе каждой команды Refresh()
ресурсы много потребляет. А существует ли механизм передачи
последней записи таблицы, без Refresh() или без Locate().
Ведь позиционирование на последнюю запись со стороны клиента тоже
занимает время.