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

M>Здравствуйте, solon, Вы писали:


S>>//опрашиваю по таймеру-есть ли новые записи с частотой 250 мсек.

S>>procedure TForm1.Timer1Timer(Sender: TObject);
S>>begin
S>>//Посмотрим обновленные данные
S>> //IBTable1.Close; // может работать и
S>>// IBTable1.Open; // без переоткрытия
S>> IBTable1.Refresh;
S>> IbTable1.Last;
S>>//..нужна последняя запись
S>>end;

S>>Это всё работает, но загружает процессор почти на 100 процентов

S>>да и плюс сетку тоже нагружает на тот случай когда запрашиваем
S>>есть ли новые записи, а их пока нет.
S>> МОЖЕТ ВСЕТАКИ НА САМОМ ИНТЕРБАЙСЕ ЕСТЬ ОПЦИЯ НАСТРАИВАЕМАЯ,
S>>КОТОРАЯ ПОСЫЛАЕТ ОБНОВЛЕННЫЕ ДАННЫЕ ПОДСОЕДИНЕННЫМ КЛИЕНТАМ
S>>(ОТКРЫТЫМ ТАБЛИЦАМ)???

M>Опрашивать о новых записях можно и менее ресурсоёмко.

M>Например, снабжаем каждую запись уникальным ID (который почти наверняка уже есть ), создаваемым в триггере на вставку с помощью отдельного генератора.
M>А затем по таймеру получаем значение этого генератора и сравниваем с запомненым. При изменении — refresh.

M>Для получения значения генератора лучше всего использовать TIBSQL и запрос:


M>SELECT GEN_ID( MY_GENERATOR, 0) AS ID FROM RDB$DATABASE;


M>Далее, если записи в таблицу могут только вставляться, то вместо полного обновления IBTable1.Refresh (тяжёлая процедура), дешевле просто получать новые записи (по тому же ID) и отображать их (уже вручную).



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

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

1.Правильно ли я Вас понял, что для второго случая с TIBEvent,
что когда вcтавляются новые записи с помощью триггера, последней строкой в триггере
должно быть POST_EVENT <строка>. Тоесть как увязывается воедино:
выполнение запроса на вставку новой записи на сервере
и посылка события POST_EVENT <строка> вставки новой записи с сервера?
2. Я не могу понять как работает в Делфях пример IBXEvents:
открываю базу events.gdb,генерирую событие MyEvent, но две последние
кнопки не работают: Event Registation и Event Received ???
Тоесть в листбокс ничего не вижу???
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.