Здравствуйте, 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>(ОТКРЫТЫМ ТАБЛИЦАМ)???
Опрашивать о новых записях можно и менее ресурсоёмко.
Например, снабжаем каждую запись уникальным ID (который почти наверняка уже есть

), создаваемым в триггере на вставку с помощью отдельного генератора.
А затем по таймеру получаем значение этого генератора и сравниваем с запомненым. При изменении — refresh.
Для получения значения генератора лучше всего использовать TIBSQL и запрос:
SELECT GEN_ID( MY_GENERATOR, 0) AS ID FROM RDB$DATABASE;
Далее, если записи в таблицу могут только вставляться, то вместо полного обновления IBTable1.Refresh (тяжёлая процедура), дешевле просто получать новые записи (по тому же ID) и отображать их (уже вручную).
Другой способ получения уведомлений — компонент TIBEvent. С его помощью регистрируем на сервере события, в которых заинтересованы.
На самом сервере в триггерах при наступлении события выполняем POST_EVENT <строка>. TIBEvent получает его и делаем refresh.
При этом не надо постоянно опрашивать сервер, но сама работа с events — требует аккуратности.