Re[10]: IB & быстрая вставка записей по TTimer
От: solon  
Дата: 26.11.03 08:21
Оценка:
Здравствуйте, 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().
Ведь позиционирование на последнюю запись со стороны клиента тоже
занимает время.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.